我已经通过启动文件在我的PHP代码中设置了调试: -
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
但是它从不显示任何错误。目前我主要是查询或更新数据库表。即使创建使用PHP的问题,例如错过括号或分号,或拼写列名称,屏幕仍为空白且没有错误。如果你放入一大堆代码,这会使调试变得缓慢!
答案 0 :(得分:0)
PHP error reporting没有报告MySQL的错误,MySQL有自己的错误检查方法。
即:
INSERT INTO table (column 1) VALUES ($string)
仅当or die(mysqli_error($connection))
添加到mysqli_query()
时,才会抛出两个错误。
请注意column
和1
之间的空格,而不是引用$string
变量?
INSERT INTO table (`column 1`) VALUES ('$string')
使用列名周围的刻度和字符串值周围的引号。
旁注:
实际上,它在技术上应该是三个错误,因为从技术上讲,table
是一个MySQL保留字,column
。
因此,这也需要包含在刻度线中。
INSERT INTO `table` (`column 1`) VALUES ('$string')
也是如此
SELECT column name with spaces-and-hyphens FROM table name WHERE column = string
应为:
SELECT `column name with spaces-and-hyphens` FROM `table name` WHERE `column` = 'string'
现在故意造成错误:
$query = mysqli_query($connection, "SELECT `column name with spaces-and-hyphens`
FROM `table name` WHERE `column` = 'string'";
由于缺少括号,也会抛出错误。
或缺少引用:
$query = mysqli_query($connection, "SELECT `column name with spaces-and-hyphens`
FROM `table name` WHERE `column` = 'string');
或丢失的勾号:
$query = mysqli_query($connection, "SELECT `column name with spaces-and-hyphens
FROM `table name` WHERE `column` = 'string'");
从评论中拉出来:
&#34;除了SQL错误之外,我还提到语法错误,例如缺少分号或不正确的包围。&#34;
A:缺少分号不是MySQL,PHP会将其作为解析错误,而PHP就是error reporting会踢。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
脚注: on
内部使用php.ini
方法
display_errors = on
而不是ini_set()
。有关标识符限定符的更多信息,请访问:
答案 1 :(得分:0)
仅关注发布的代码,启用错误显示的正确方法是:
ini_set('display_errors', '1');
字符串On
的评估结果为0
。毫无疑问,它没有显示任何错误。
上面的代码可以显示运行时错误。语法错误是编译错误;这意味着代码没有机会运行。为了能够显示编译错误,您必须编辑php.ini
。
建议在生产服务器上不显示页面中的任何错误。相反,请记录运行时错误(请参阅log_errors
ini配置),并通过使用单独的计算机进行开发(并在该计算机上启用错误显示)确保没有编译错误。