php - 我如何调试为什么最简单的 MySQL 查询返回 false?

标签 php mysql

我使用 xampp。我执行了 MySQL 连接:

$connection = mysql_connect($host , $user , $passw);
mysql_select_db($db, $connection);

我收到了带有 echo 命令的输出(通过检查返回的 bool 值),表明连接已建立并且数据库 $db 已找到。

但最简单的查询如下:

$query = mysql_query("SELECT * FROM 'users'");

返回错误。我该如何调试原因?谢谢。

最佳答案

强制性更新:由于 mysql ext 已不复存在,以下是我根据在 Stack Overflow 上回答 1000 多个问题的经验在我的网站上编写的两个剩余 MySQL API 的答案:

简而言之,对于 mysqi,必须在 mysqli_connect() 调用之前添加以下行:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

而对于 PDO,必须设置正确的错误模式,例如

$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

从旧的 mysql 分机开始,

要从 mysql_query() 中获取错误,您必须使用 mysql_error() 函数。
因此,请始终以这种方式运行所有查询,至少在您开发出更高级的查询处理程序之前:

$query = "SELECT * FROM 'users'";
$result = mysql_query($query) or trigger_error(mysql_error()." ".$query);

您当前查询的问题是'users' 部分。必须使用单引号来分隔字符串,而对于标识符,您必须使用反引号:

SELECT * FROM `users`

为了在开发过程中看到这些错误,将这些行添加到代码的顶部以确保您可以看到发生的每个错误

ini_set('display_errors',1);
error_reporting(E_ALL);

然而,在生产服务器上,第一行的值应该从 1 更改为 0

关于php - 我如何调试为什么最简单的 MySQL 查询返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619610/

相关文章:

mysql - 数据库更新查询?

javascript - 正则表达式允许以全名形式并以字母开头的任何语言字符

php - 将 & 号插入 MySQL 的问题

php - 获取 PHP 数组中的最后一个键值对

java - 使用 JDBC 连接到 Mysql 时出现 ClassNotFoundException

php - sql 表中每行旁边的链接导致 php 显示该行的完整数据

mysql - 在数据库中存储一对多列的最佳方法

PHP 和 MySQL 显示平均值

php - 当电子邮件和密码位于单独的表 cakephp 中时验证用户

mysql - yii2 : add IFNULL exception to Command