Php 多个mysqli准备的语句不能一起工作
自从我上次使用PHP(几年前)以来,PHP世界发生了很多变化。现在看来我需要重新学习所有的东西,这就引出了我目前的问题Php 多个mysqli准备的语句不能一起工作,php,mysql,forms,select,mysqli,Php,Mysql,Forms,Select,Mysqli,自从我上次使用PHP(几年前)以来,PHP世界发生了很多变化。现在看来我需要重新学习所有的东西,这就引出了我目前的问题 /* Create a prepared statement */ $stmt1 = $mysqli -> prepare("SELECT channel FROM channel WHERE barcode=?"); $stmt2 = $mysqli -> prepare("SELECT action FROM action WHERE barcode=?");
/* Create a prepared statement */
$stmt1 = $mysqli -> prepare("SELECT channel FROM channel WHERE barcode=?");
$stmt2 = $mysqli -> prepare("SELECT action FROM action WHERE barcode=?");
$stmt3 = $mysqli -> prepare("SELECT reason FROM reason WHERE barcode=?");
$stmt4 = $mysqli -> prepare("SELECT supplier_name FROM suppliers WHERE barcode=?");
/* Bind parameters */
$stmt1 -> bind_param("s", $_POST['channel']);
$stmt2 -> bind_param("s", $_POST['action']);
$stmt3 -> bind_param("s", $_POST['reason']);
$stmt4 -> bind_param("s", $_POST['supplier']);
/* Execute it */
$stmt1 -> execute();
$stmt2 -> execute();
$stmt3 -> execute();
$stmt4 -> execute();
/* Bind results */
$stmt1 -> bind_result($channel1);
$stmt2 -> bind_result($action1);
$stmt3 -> bind_result($reason1);
$stmt4 -> bind_result($supplier1);
/* Fetch the value */
$stmt1 -> fetch();
$stmt2 -> fetch();
$stmt3 -> fetch();
$stmt4 -> fetch();
echo "Channel ".$channel1."; Action: ".$action1."; Reason: ".$reason1."; Supplier: ".$supplier1;
一切都很好,一个接一个,但当一切结合起来。。。没有什么。只有第一句话才行。我做错了什么?发生这种情况是因为:
- : 注: 使用mysqli_stmt_execute()时,在执行任何其他查询之前,必须使用mysqli_stmt_fetch()函数获取数据
- : 关闭准备好的语句。mysqli_stmt_close()还取消分配语句句柄。如果当前语句有挂起或未读的结果,此函数将取消这些结果,以便执行下一个查询
- 绑定(用于参数和结果)可以在执行之前完成。。。仅将每个语句的execute()、fetch()和close()排除在一个单独的块中
还要注意使用
trigger\u error($mysqli->error)
在使用prepare()
时检查可能出现的错误是否有错误?你如何确定其他人不工作,而第一个不工作?需要更多详细信息。只有第一个变量得到echo-ed。其他所有变量都为空。这就是为什么我说只有第一个有效。好吧,我看到你所有的查询都在寻找条形码。但是您提供了4个$\u POST
变量。它们可能是空的,或者包含不存在的条形码?可能所有四个语句都应该$stmt1->bind_param(“s”,“$”POST['barcode')语句1-4的代码>。您还在访问$\u POST[]
时拼写错误了reason
。情况并非如此,因为我回显了$\u POST变量,并且所有变量都存储了正确的信息。已尝试使用所有4条语句$stmt->bind_param(…),但仍然无效。谢谢你让我知道拼写错误。