Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个mysqli准备的语句不能一起工作_Php_Mysql_Forms_Select_Mysqli - Fatal编程技术网

Php 多个mysqli准备的语句不能一起工作

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=?");

自从我上次使用PHP(几年前)以来,PHP世界发生了很多变化。现在看来我需要重新学习所有的东西,这就引出了我目前的问题

/* 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')。您还在访问
$\u POST[]
时拼写错误了
reason
。情况并非如此,因为我回显了$\u POST变量,并且所有变量都存储了正确的信息。已尝试使用所有4条语句$stmt->bind_param(…),但仍然无效。谢谢你让我知道拼写错误。