当前位置: 首页 > 面试题库 >

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

裴昊阳
2023-03-14
问题内容

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

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

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

但最简单的查询如下:

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

返回false。我该如何调试原因?


问题答案:

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

  • 如何报告mysqli中的错误
  • 如何使用PDO连接到MySQL(以正确的错误报告为目标)。

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

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

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

从旧版mysql ext开始,

要获得错误,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



 类似资料:
  • 补充: temp是别名,我截图截错了; plan_start_time 是varchar类型 SELECT STR_TO_DATE(plan_start_time, '%h:%i:%s') as temp ,plan_start_time from base_stop_calendar

  • 问题内容: 今天,我写了一个查询,应该返回一个错误。而是返回带有列名和数据类型的值15 。你知道为什么吗? 结果: 问题答案: 您要指定一个常量: 货币常量表示为数字字符串,带有可选的小数点 和可选的货币符号作为前缀 因此moneyselect $15select ¥15`。 正如Jeroen在评论中指出的那样: 因为日元符号(楼)是货币指示器,并且在某些日语本机字符集中,其代码点与ASCII中的

  • 问题内容: 如何计算MySQL查询返回的行数? 问题答案: 获取查询结果中的总行数… 您可以仅迭代结果并计数。您没有说使用什么语言或客户端库,但是API确实提供了mysql_num_rows函数,该函数可以告诉您结果中的行数。 例如,这在PHP中作为mysqli_num_rows函数公开。编辑问题以提及您正在使用PHP时,这是一个使用mysqli函数的简单示例: 获取符合某些条件的行数… 只需使用

  • 问题内容: 我有一堆应聘者,他们有一些或多个工作,每个人都在公司工作,并且使用了一些技能。 坏的ascii艺术如下: 这是我的数据库: 。 。 。 。 这是我对查询的尝试(请注意,我打算将通配符更改为字段名称;我只是想使某些功能生效): HediSql说 查询出了什么问题?我希望从不良的ascii艺术中可以清楚地知道我要达到的目标。 (此外,它对我连接表的顺序是否有任何速度差异?我将担心新的MyS

  • 问题内容: 为什么这个简单的计算返回0 虽然这实际上可以正确计算? 第一个例子有什么问题? 问题答案: 在Python 2中,执行整数除法时为零。由于结果小于。 您可以通过添加到脚本中来“修复”此问题。使用运算符并用于整数除法时,这将始终执行浮点除法。 另一种选择是使至少一个操作数为浮点数,例如。 在Python 3中,始终为。