调试没有出现在PHP中

调试没有出现在PHP中,php,mysqli,Php,Mysqli,我已通过启动以下文件在PHP代码中设置调试:- <?php ini_set('display_errors', 'On'); error_reporting(E_ALL); 但是,它从不显示任何错误。目前我主要是查询或更新数据库表。即使在使用PHP时出现问题,例如缺少括号或分号,或拼写错误列名,屏幕也是空白的,没有错误。如果放入一段代码,这会使调试过程变慢 PHP不会为MySQL报告错误,MySQL有自己的错误检查方法 请参阅我的脚注 即: 仅当向mysqli\u查询添加或diemys

我已通过启动以下文件在PHP代码中设置调试:-

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
但是,它从不显示任何错误。目前我主要是查询或更新数据库表。即使在使用PHP时出现问题,例如缺少括号或分号,或拼写错误列名,屏幕也是空白的,没有错误。如果放入一段代码,这会使调试过程变慢

PHP不会为MySQL报告错误,MySQL有自己的错误检查方法

请参阅我的脚注

即:

仅当向mysqli\u查询添加或diemysqli\u error$connection时,才会引发两个错误

注意列和1之间的空格,并且没有引用$string变量

INSERT INTO table (`column 1`) VALUES ('$string')
在列名周围使用记号,在字符串值周围使用引号

旁注:

实际上,从技术上讲应该有三个错误,因为从技术上讲,table是一个MySQL保留字

因此,这也需要用记号来包装

INSERT INTO `table` (`column 1`) VALUES ('$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'");
摘自评论:


除了SQL错误外,我还提到了语法错误,例如缺少分号或括号不正确

答:缺少分号的不是MySQL,这是PHP将其视为解析错误的地方,也是PHP的作用所在

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
脚注:on方法在php.ini中使用

显示错误=打开,而不是在ini集合中。 有关标识符限定符的详细信息,请访问:


仅针对发布的代码,启用错误显示的正确方法是:

ini_set('display_errors', '1');
上的字符串计算为0。难怪它没有显示任何错误

上面的代码可以显示运行时错误。语法错误是编译错误;这意味着代码没有机会运行。为了能够显示编译错误,您必须编辑php.ini


在生产服务器上,建议不要在页面中显示任何错误。相反,记录运行时错误,查看ini配置,确保使用单独的机器进行开发时没有编译错误,并在该机器上启用错误显示。

PHP不会显示任何SQL错误。您必须使用mysqli_*函数检查SQL错误查看您的代码将有助于显示您期望出现错误的代码除了SQL错误,我还指语法错误,例如缺少分号或不正确的括号。我没有在要求时发布任何代码,因为我只是看到了注释,因为我没有观看屏幕等待回答@让·米歇尔没问题。好吧,我希望这能有所帮助。@Jean-Michel我是否回答了这个问题,还是应该删除它?自从您第一次看到它以来,我已经做了一些编辑。我发现,如果我选择Geany->Build->Execute,则会报告诸如解析错误之类的打字错误,但如果我使用浏览器,则不会报告,因为Geany终端的格式不正确,所以我希望使用浏览器来运行它。@Jean Michel我不熟悉Geany。
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
ini_set('display_errors', '1');