2015-01-15 53 views
0

我是网络开发新手,所以可能有些事情我做错了。PHP - 查询mysql时出错处理

我正在使用webmatrix进行开发,并使用webmatrix提供的StarterSite示例进行播放。

在php文件(header.php)中有一个使用mysqli扩展名的查询。我已将tablename更改为某个不存在的表以模拟错误情况。问题是,经过以下声明 -

$statement->execute(); 

脚本停止。 我在执行后插入了一个echo语句,并且该回显字符串未显示在网页上。但是,当我更正表名时,执行后的回显字符串显示在网页上。所以我认为脚本在表名错误时停止执行。我有两个问题。如何停止脚本停止执行?其次如何确定脚本已经停止执行某些特定的语句?

对于问题的第二部分,我检查了IISExpress文件夹中的日志文件和tracelog文件。没有提到任何错误,可能是因为错误发生在MYSQL中。但是,在我的MYSQL文件夹中没有日志文件,所以不知道如何检查mysql日志。

如果我错过了任何东西,请告诉我。

问候, 图莎尔

+0

读'mysqli' PHP手册部分,可能会有一些有用的信息。 – 2015-01-15 17:40:26

+0

为什么使用IIS作为网络服务器时使用PHP和MySQL不是相关的;只是好奇?过去,使用PHP和MySQL的IIS在交通繁忙时遇到了问题。 – unixmiah 2015-01-15 18:26:26

+0

难道你不能为你的问题想出一个独特的(或者至少有一半有趣的)标题吗?也请只写...每个问题...,呃,问题! – 2015-01-15 19:14:55

回答

0

你应该阅读有关mysqli的错误处理。

基本的错误处理例如OOP:

if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

程序:

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
0

这取决于你正在登录的。在错误日志中,您可以定义正在记录的内容。我想你可以在php.ini中控制错误的严格模式,它会自动将错误输入到access_log或error_log或apache日志文件中。

诀窍是在mysqli查询和db连接的每一步中使用$ mysqli-> error,以确保您得到正确的错误消息,详细说明是调试,改进代码还是正确执行代码。

以下是在查询数据库时使用$ mysqli->错误的示例。

$result = $mysqli->query($query); 
if (!$result and $mysqliDebug) { 
// the query failed and debugging is enabled 
echo "<p>There was an error in query: $query</p>"; 
echo $mysqli->error; //additional error 
} 

您还可以使用一种方法,可以定义MySQL错误在康涅狄格州分贝

// define a variable to switch on/off error messages 
$mysqliDebug = true; 
// connect to your database 
// if you use a single database, passing it will simplify your queries 
$mysqli = @new mysqli('localhost', 'myuser', 'mypassword', 'mydatabase'); 
// mysqli->connect_errno will return zero if successful 
if ($mysqli->connect_errno) { 
echo '<p>There was an error connecting to the database!</p>'; 
if ($mysqliDebug) { 
// mysqli->connect_error returns the latest error message, 
// hopefully clarifying the problem 
// NOTE: supported as of PHP 5.2.9 
echo $mysqli->connect_error; 
} 
// since there is no database connection your queries will fail, 
// quit processing 
die(); 
} 

@ref是真实的:https://www.daniweb.com/web-development/php/code/434480/using-phpmysqli-with-error-checking