调试不在PHP中出现

时间:2015-05-21 16:29:35

标签: php mysqli

我已经通过启动文件在我的PHP代码中设置了调试: -

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

但是它从不显示任何错误。目前我主要是查询或更新数据库表。即使创建使用PHP的问题,例如错过括号或分号,或拼写列名称,屏幕仍为空白且没有错误。如果你放入一大堆代码,这会使调试变得缓慢!

2 个答案:

答案 0 :(得分:0)

PHP error reporting没有报告MySQL的错误,MySQL有自己的错误检查方法。

即:

INSERT INTO table (column 1) VALUES ($string)
仅当or die(mysqli_error($connection))添加到mysqli_query()时,

才会抛出两个错误。

请注意column1之间的空格,而不是引用$string变量?

INSERT INTO table (`column 1`) VALUES ('$string')

使用列名周围的刻度和字符串值周围的引号。

旁注:

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

因此,这也需要包含在刻度线中。

INSERT INTO `table` (`column 1`) VALUES ('$string')

SELECT

也是如此
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配置),并通过使用单独的计算机进行开发(并在该计算机上启用错误显示)确保没有编译错误。