为什么需要在每个存储过程之前包括连接文件

阿努

我有一个php文件,它正在调用一些文件stored procedures

include "../../commonFilesForAll/db.php";
$tagQueryQcWaiting = "CALL qcWaitingQuery()";
$tagQueryQcWaitingExecute = mysqli_query($conn, $tagQueryQcWaiting);
$qcWaiting = mysqli_num_rows($tagQueryQcWaitingExecute);

$tagQueryQcFailed = "CALL qcFailedQuery()";
$tagQueryQcFailedExecute = mysqli_query($conn, $tagQueryQcFailed);
$qcFailed = mysqli_num_rows($tagQueryQcFailedExecute);

$tagQueryQcAssigned = "CALL qcAssignedQuery()";
$tagQueryQcAssignedExecute = mysqli_query($conn, $tagQueryQcAssigned);
$qcAssigned = mysqli_num_rows($tagQueryQcAssignedExecute);

但是当我给出上述方法时,它不起作用。我必须在如下所示的每个查询之前包含连接文件,以便其如下所示工作

include "../../commonFilesForAll/db.php";
$tagQueryQcWaiting = "CALL qcWaitingQuery()";
$tagQueryQcWaitingExecute = mysqli_query($conn, $tagQueryQcWaiting);
$qcWaiting = mysqli_num_rows($tagQueryQcWaitingExecute);

include "../../commonFilesForAll/db.php";
$tagQueryQcFailed = "CALL qcFailedQuery()";
$tagQueryQcFailedExecute = mysqli_query($conn, $tagQueryQcFailed);
$qcFailed = mysqli_num_rows($tagQueryQcFailedExecute);

include "../../commonFilesForAll/db.php";  
$tagQueryQcAssigned = "CALL qcAssignedQuery()";
$tagQueryQcAssignedExecute = mysqli_query($conn, $tagQueryQcAssigned);
$qcAssigned = mysqli_num_rows($tagQueryQcAssignedExecute);

我的存储过程示例如下 qcWaitingQuery

BEGIN
  SELECT * FROM plannertags WHERE (`status` = '0' OR `status` = '2') 
  AND currentStage = '12' 
  AND assignedTo = '0' 
  AND handoverStatus = '0' 
  AND failedStatus = '0' 
  ORDER BY deliveryDate ASC;
END

qcFailedQuery

BEGIN
  SELECT * FROM plannertags t JOIN failedTable n on t.srNumber = n.plannerTagsSrNumber
  WHERE (t.status = 0 OR t.status = 2) 
  AND t.currentStage = '12' 
  AND t.assignedTo = '0' 
  AND t.handoverStatus = '0' 
  AND n.failedDepartment = '12' 
  AND n.status = '0' 
  AND n.latestTag='1' 
  ORDER BY t.deliveryDate ASC;
END

qcAssignedQuery

BEGIN
  SELECT *FROM plannertags t JOIN qctable n on t.srNumber = n.plannerTagsSrNumber
  WHERE (t.status = 0 OR t.status = 2) 
  AND t.currentStage = '12' 
  AND t.assignedTo = '12' 
  AND t.handoverStatus = '0' 
  AND n.failedStatus = '0' 
  AND n.qcHold != '1'
  ORDER BY t.deliveryDate ASC;
END

我的db.php档案如下

$servername = "111.11.11.111";
$username = "111";
$password = "111111";
$database = "111";

$conn = mysqli_connect($servername, $username, $password, $database);

if (!$conn) {
   die("Connection failed: " . mysqli_connect_error());
}

有人知道为什么会这样吗?

达曼

您无需每次都打开连接。您的错误是您正在调用存储过程,但未获取所有结果。SP具有隐藏的行为,它们总是在其中包含的SELECT语句之上返回结果这意味着您需要正确获取两个结果,否则将出现不同步错误。

在对存储过程的每次调用之后,获取第二个结果,它应该可以工作。

include "../../commonFilesForAll/db.php";
$tagQueryQcWaiting = "CALL qcWaitingQuery()";
$tagQueryQcWaitingExecute = mysqli_query($conn, $tagQueryQcWaiting);
$qcWaiting = mysqli_num_rows($tagQueryQcWaitingExecute);

mysqli_next_result($conn); // fetch the empty result of SP call

如果正确配置了mysqli,则会看到正确的不同步错误。您的连接脚本不正确。您必须始终启用错误报告。替换为:

$servername = "111.11.11.111";
$username = "111";
$password = "111111";
$database = "111";

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = mysqli_connect($servername, $username, $password, $database);

确保删除该if语句。您还应该设置正确的连接字符集。请阅读手册以获取更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么sudo在执行该过程之前会分叉?

来自分类Dev

为什么要在每个文件上都需要所有模块?

来自分类Dev

为什么需要在settings.xml文件中指定存储库

来自分类Dev

为什么我需要在Kotlin中在=之前添加空间?

来自分类Dev

为什么cookie和会话需要在HTML之前出现?

来自分类Dev

是否总是需要在 Keras 之前安装 TensorFlow?为什么?

来自分类Dev

FFmpeg:为什么我们需要在转换过程中创建临时文件

来自分类Java

为什么JDBC连接需要在finally块中关闭?

来自分类Dev

当所有其他线程在主线程之前完成时,为什么仍然需要.join?

来自分类Dev

在退出存储过程之前检测到空游标

来自分类Java

为什么需要在Java源文件中转义unicode?

来自分类Dev

为什么HBase需要为每个值存储列族?

来自分类Dev

如何在创建存储过程之前检查存储过程的存在

来自分类Dev

为什么需要在公共访问控制viewController中覆盖viewDidLoad之前设置public

来自分类Dev

为什么GCC在调用成员函数之前需要在new前面加上方括号?

来自分类Dev

为什么在写入stderr之前需要在stdout上使用fflush?

来自分类Dev

为什么我们需要在 execvp 之前在管道上调用 close?

来自分类Dev

为什么需要在 xampp 控制面板上的 mysql 之前启动 apache

来自分类Dev

为什么有时需要在将对象作为参数传递之前创建变量

来自分类Dev

为什么要在Pig中运行Average函数之前需要对关系进行分组

来自分类Dev

为什么我们需要在换行符 \n 之前回车 \r?

来自分类Dev

为什么在编译之前不连接C源文件?

来自分类Dev

在postgres过程中,为什么在将数组作为参数的任何函数之前需要“ =”?

来自分类Dev

为什么我们需要在Android应用中存储Goefence数据?

来自分类Dev

为什么要在S3上进行主动存储需要使用“ region”字段?

来自分类Dev

为什么我需要在 18.04 中启用 `universe` 存储库 - 它不是默认启用的吗?

来自分类Dev

为什么需要在链接列表中存储下一个项目指针

来自分类Dev

需要在存储过程参数中发送计算值

来自分类Dev

为什么需要在Corda中将某个课程列入白名单?白名单课程和普通课程之间的主要区别是什么?

Related 相关文章

  1. 1

    为什么sudo在执行该过程之前会分叉?

  2. 2

    为什么要在每个文件上都需要所有模块?

  3. 3

    为什么需要在settings.xml文件中指定存储库

  4. 4

    为什么我需要在Kotlin中在=之前添加空间?

  5. 5

    为什么cookie和会话需要在HTML之前出现?

  6. 6

    是否总是需要在 Keras 之前安装 TensorFlow?为什么?

  7. 7

    FFmpeg:为什么我们需要在转换过程中创建临时文件

  8. 8

    为什么JDBC连接需要在finally块中关闭?

  9. 9

    当所有其他线程在主线程之前完成时,为什么仍然需要.join?

  10. 10

    在退出存储过程之前检测到空游标

  11. 11

    为什么需要在Java源文件中转义unicode?

  12. 12

    为什么HBase需要为每个值存储列族?

  13. 13

    如何在创建存储过程之前检查存储过程的存在

  14. 14

    为什么需要在公共访问控制viewController中覆盖viewDidLoad之前设置public

  15. 15

    为什么GCC在调用成员函数之前需要在new前面加上方括号?

  16. 16

    为什么在写入stderr之前需要在stdout上使用fflush?

  17. 17

    为什么我们需要在 execvp 之前在管道上调用 close?

  18. 18

    为什么需要在 xampp 控制面板上的 mysql 之前启动 apache

  19. 19

    为什么有时需要在将对象作为参数传递之前创建变量

  20. 20

    为什么要在Pig中运行Average函数之前需要对关系进行分组

  21. 21

    为什么我们需要在换行符 \n 之前回车 \r?

  22. 22

    为什么在编译之前不连接C源文件?

  23. 23

    在postgres过程中,为什么在将数组作为参数的任何函数之前需要“ =”?

  24. 24

    为什么我们需要在Android应用中存储Goefence数据?

  25. 25

    为什么要在S3上进行主动存储需要使用“ region”字段?

  26. 26

    为什么我需要在 18.04 中启用 `universe` 存储库 - 它不是默认启用的吗?

  27. 27

    为什么需要在链接列表中存储下一个项目指针

  28. 28

    需要在存储过程参数中发送计算值

  29. 29

    为什么需要在Corda中将某个课程列入白名单?白名单课程和普通课程之间的主要区别是什么?

热门标签

归档