我目前有这个 PHP 代码。
if (isset($User)){
if (is_object($User)) {
if (!$result_paycon = $mysqli->query("CALL CHECK_CONVENTION(" . $User->id . "," . $row_convention["IDCONVENTION"] . ")")){
printf("Database error");
exit;
}
if (!$result_block = $mysqli->query("SELECT * FROM VIEW_ROOMBLOCK WHERE IDCONVENTION = " . $row_convention["IDCONVENTION"])){
var_dump($result_block);
printf("Database error");
exit;
}
}
}
无论我用它做什么,$result 块的 var 转储总是 bool(false)。然后当我需要对其使用 fetch_array 时,它只会告诉我 $result_block 是一个非对象。但是,将我的第一个查询从过程调用更改为常规选择似乎可以解决问题,因此将其完全从代码中删除也是如此。
我回应了这两个调用的 SQL 查询,如果我将它们直接插入 SQL,它们都会返回一些东西。
有什么我没有做的吗?
编辑1:仍然没有运气。但是,如果我像这样反转代码:
if (!$result_block = $mysqli->query("SELECT * FROM VIEW_ROOMBLOCK WHERE IDCONVENTION = " . $row_convention["IDCONVENTION"])){
printf("Database error");
exit;
}
if (!$result_paycon = $mysqli->query("CALL CHECK_CONVENTION(" . $User->id . "," . $row_convention["IDCONVENTION"] . ")")){
printf("Database error");
exit;
}
var_dump($result_block);
echo "<br />";
var_dump($result_paycon);
我从 var 转储中得到以下信息:
object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(10) ["lengths"]=> NULL ["num_rows"]=> int(2) ["type"]=> int(0) }
object(mysqli_result)#5 (5) { ["current_field"]=> int(0) ["field_count"]=> int(2) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }
但是对于以前的代码,其中一个失败了,我仍然不知道为什么。
编辑 2:我刚刚在以前的代码中打印了 mysqli 对象的错误属性的值。我得到以下信息:
命令不同步;你现在不能运行这个命令