0

我正在尝试使用 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 准备好的语句完全陌生。任何帮助将不胜感激; 感谢您的时间。

4

2 回答 2

2

对于有相当多的 PHP 经验的人来说,你对错误报告很轻率。
由于您没有提供错误消息,我们只能猜测它是常规 Web 服务器的 503 响应。
在这种情况下,您必须在服务器的 error_log 中搜索实际的错误消息,阅读它并采取适当的措施来修复它。

检查$dbconn->error也有帮助。

报错有两种方式:

  • 在屏幕上显示它们(在开发中不错,但在生产中不可接受)
  • 将它们写入日志(在生产服务器上绝对必须)

有一些负责此行为的 ini 设置。

  • display_errors告诉 PHP 是否应该显示错误
  • log_errors告诉 PHP 是否应该记录错误。默认情况下,它会登录到网络服务器的 error_log
  • error_log告诉 php 必须写入 PHP 错误的文件名

请使用您的托管工具设置适当的设置。
否则你无论如何都无法使用这个主机——如果程序员看不到错误消息,他就无法工作。

收到错误消息后,将其直接转发到谷歌搜索表单非常有用。很可能有人已经遇到过同样的问题,甚至在 Stackoverflow 上问过

于 2013-01-17T18:03:28.043 回答
1

我看到的第一件事是这条线:

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");

应该:

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_db");

试试看,看看会发生什么。

于 2013-04-04T23:29:23.400 回答