gpt4 book ai didi

php - MySQL Workbench 与 PHP 的执行结果不同

转载 作者:行者123 更新时间:2023-11-29 15:16:58 26 4
gpt4 key购买 nike

我在 PHP 中使用以下 MySQL 语句,直接在 MySQLWorkBench 中输入它们会产生截然不同且意想不到的结果:

SET SQL_SAFE_UPDATES = 0;
SET @idx = 1;
UPDATE Database.Table SET sequence = 9999 WHERE category = 'MyCat' AND sequence = 15;
UPDATE Database.Table SET sequence = @idx := @idx + 1 WHERE category = 'MyCat' AND sequence >= 1 AND sequence <= 15 ORDER BY sequence;
UPDATE Database.Table SET sequence = 1 WHERE category = 'MyCat' AND sequence = 9999;
SELECT * FROM Database.Table WHERE category = 'MyCat';

它在 MySQLWorkbench 中按预期工作,但在 PHP 中完全奇怪。首先,序列 = 15 处的记录根本不会移动,另一个不相关的序列号可能会也可能不会代替它。

最佳答案

您是从 PHP 执行多个单独的查询还是单个多语句查询?如果是第一个,您的 session 变量 @idx 将不起作用。

无论如何,你为什么要这样做?像这样的简单查询有什么问题:

UPDATE
Database.Table
SET
sequence = IF(sequence = 15, 1, sequence + 1)
WHERE
category = 'MyCat'
AND sequence BETWEEN 1 AND 15
;

关于php - MySQL Workbench 与 PHP 的执行结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59639172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com