我是网络开发的新手,所以可能我做错了。
我正在使用webmatrix进行开发,并使用webmatrix提供的StarterSite示例。
在其中一个php文件(header.php)中,有一个使用mysqli扩展的mysql查询。我已将tablename更改为一些不存在的表来模拟错误情况。问题是,在下面的陈述之后 -
$statement->execute();
脚本停止。 我在执行后插入了一个echo语句,并且在网页上没有显示echo字符串。但是,当我更正表名时,执行后的echo字符串显示在网页上。所以我认为当表名错误时脚本在执行后停止执行。我有两个问题。如何阻止脚本停止执行?其次如何确定脚本在某个特定语句中已停止执行?
对于第二部分问题,我检查了IISExpress文件夹中的日志文件和tracelog文件。没有提到任何错误,可能是因为MYSQL中发生了错误。但是,在我的MYSQL文件夹中没有日志文件,因此不确定如何检查mysql日志。
如果我错过了什么,请告诉我。
此致 图莎尔
答案 0 :(得分: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();
}
答案 1 :(得分:0)
这取决于您记录的内容。在错误日志中,您可以定义要记录的内容。我认为你可以在php.ini中控制错误的严格模式,这会自动将错误输入access_log或error_log或apache日志文件。
诀窍是在mysqli查询和db连接的每一步中使用$ mysqli->错误,以确保您获得正确的错误消息,无论是调试,改进代码还是正确执行。
以下是在查询数据库时使用$ 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
}
您还可以使用在db conn
中将mysql错误定义为true的方法 // 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