php - 从 PHP 调用与从 Mysql Shell 调用时,Mysqli 查询结果不同
问题描述
我已经搜索过这个问题的答案,但在网上找不到任何东西。
当从计算机上的 mysql shell 运行时,我遇到了一个查询,它给出了正确的结果集,但在 PHP 脚本中从 mysqli 运行时,结果集不同。
查询是:
SELECT q.pos, q.event_ID, e.name FROM (SELECT @row_number:=CASE WHEN @event_ID=e_ID THEN @row_number+1 ELSE 1 END AS pos, @event_ID:=e_ID as event_ID, u_ID from event_queue ORDER BY e_ID, dateadded) AS q INNER JOIN event AS e ON q.event_ID = ID WHERE q.u_ID=11;
如果这是从 mysqli 调用的,那么我得到的位置值 (q.pos) 为 1,如果从 mysql shell 运行,那么我得到正确的值 4。我认为这是因为它在 mysql 代码中使用了一个变量,但我在网上找不到任何描述此问题的内容。
有人可以指出我正确的方向吗?
谢谢。
解决方案
对我有用的解决方案只是从第一个 SQL 查询的末尾删除分号。
我有:
mysqli_query($dbcon,"SET @row_number=0;");
我将其更改为:
mysqli_query($dbcon,"SET @row_number=0");
它奏效了。我还需要在另一个 mysqli 查询中设置 @event_ID 变量。
谢谢。
推荐阅读
- python - Python-试图从图像中返回选定的轮廓。在某些轮廓上,它显示所选内容在轮廓之外
- pandas - 如何使用 pd.to_datetime() 先显示日期?
- html - 如何摆脱 Material DatetimePicker 时间下划线
- reactjs - Redux Toolkit 查询无效的 isLoading 状态
- javascript - JS 从 URL 参数中预填充输入字段
- javascript - 在 Vuejs 3 中实现插件系统
- php - 我们可以在 php 中执行时检查内存使用情况,如果内存达到 80% 或更多或在浏览器崩溃之前使作业失败
- loops - 如何在伪代码中声明维数组?
- ios - CollectionView - 停止/防止部分标题滚动超出某个点
- python - Pytest 的“caplog”夹具的类型提示是什么?