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

阿努

我有一个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

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

来自分类Dev

为什么我需要在Web配置文件中定义连接字符串

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

为什么我们需要在getline(cin,string)之前使用cin.ignore()?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

为什么我需要在每个新的沙箱中进行cabal-install安装?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

为什么我们需要在Rust中指定所有依赖项(包括传递对象)?

来自分类Dev

为什么需要在结构中填充?

来自分类Dev

为什么需要对READONLY输入SQL Server存储过程的表值参数?

来自分类Dev

为什么每次都需要对存储过程进行 GRANT EXECUTE?

来自分类Dev

JAVA-ThreadPoolExecutor 为什么我们需要在recheck过程中判断execute函数中的worker数量?

来自分类Dev

为什么sql存储过程称为存储过程

来自分类Dev

为什么我需要在该类中而不是在文件顶部导入一个类?

来自分类Dev

为什么需要在后缀配置文件中设置myhostname变量?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    为什么我需要在Web配置文件中定义连接字符串

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

    为什么我们需要在getline(cin,string)之前使用cin.ignore()?

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

    为什么我需要在每个新的沙箱中进行cabal-install安装?

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

    为什么我们需要在Rust中指定所有依赖项(包括传递对象)?

  23. 23

    为什么需要在结构中填充?

  24. 24

    为什么需要对READONLY输入SQL Server存储过程的表值参数?

  25. 25

    为什么每次都需要对存储过程进行 GRANT EXECUTE?

  26. 26

    JAVA-ThreadPoolExecutor 为什么我们需要在recheck过程中判断execute函数中的worker数量?

  27. 27

    为什么sql存储过程称为存储过程

  28. 28

    为什么我需要在该类中而不是在文件顶部导入一个类?

  29. 29

    为什么需要在后缀配置文件中设置myhostname变量?

热门标签

归档