我正在尝试使用MySQLi预处理语句对我的数据库进行简单的SELECT查询。我已阅读了大量的教程并非常密切地关注它们,但由于某种原因它仍然无法正常工作。以下是查询代码:
<?php
$user = 'abc';
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($stmt = $dbconn->prepare("SELECT id, pass FROM my_table WHERE user=?")) {
$stmt->bind_param("s",$user);
$stmt->execute();
$stmt->bind_result($db_id,$db_pass);
$stmt->fetch();
$stmt->close();
}
$dbconn->close();
echo $db_id . ' ' . $db_pass;
?>
当我运行时,这并不是说我有连接错误而是服务器错误。我有相当多的PHP经验,但对MySQLi准备好的语句来说是全新的。任何帮助将不胜感激;谢谢你的时间。
答案 0 :(得分:2)
对于拥有大量PHP经验的人来说,你对错误报告非常轻松 由于您没有提供错误消息,我们只能猜测它是常规Web服务器503的响应 在这种情况下,您必须在服务器的error_log中搜索实际的错误消息,阅读它并采取适当的措施来修复它。
检查$dbconn->error
也有帮助。
报告错误的方法有两种:
有一些ini设置负责此行为。
display_errors
告诉PHP它应该显示错误log_errors
告诉PHP它应该记录错误。默认情况下,它会登录到web-servers的error_log error_log
告诉php必须编写PHP错误的文件名请使用您的托管工具设置适当的设置 否则你无论如何都无法使用这个主机 - 如果程序员看不到错误信息就无法工作。
一旦您掌握了错误消息,将其直接转发到Google搜索表单非常有用。很可能有人已经遇到过相同甚至是asked it on Stackoverflow
答案 1 :(得分:1)
我看到的第一件事是:
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");
应该是:
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_db");
试试看看会发生什么。