【发布时间】:2015-06-09 07:54:48
【问题描述】:
有谁知道为什么我会在这样一个简单的查询中出现两个错误?错误信息是:
警告:mysqli::prepare(): 无法在第 503 行的 (...)/functions.php 中获取 mysqli
致命错误:在第 504 行 (...)functions.php 中的 null 上调用成员函数 bind_param()
$query_select = ("SELECT * FROM vat WHERE vat_status = ?");
$stmt = $mysqli->prepare($query_select); // line 503
$stmt->bind_param("s", $vat_status);
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows();
$stmt->bind_result ($vat_id ,
$vat_rate ,
$vat_account ,
$vat_description ,
$vat_status ,
$vat_timestamp );
【问题讨论】:
-
首先,打开错误报告并在该行添加
die($mysqli->error)以找出答案,这里是如何使用SELECT *和->bind_paramphp.net/manual/en/mysqli-stmt.bind-result.php#85470 或只使用@987654326 的方法@,少麻烦 -
我建议使用错误日志文件而不是可见的错误报告。但总的来说,您确实必须在代码中添加错误处理,这有助于找出失败的原因。
-
prepared声明抱怨“不太好”。无论从那里发生什么都不会导致“可靠”的结果。这发生在 500+ 行的事实是“有趣的”。您能否收集所有相关信息并将此查询与所需数据放在一个只运行该查询的文件中?要调试它,我会var_dump-$stmt, $vat_status。我还会预定义所有输出变量。