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

标签 php mysql

我在 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/

相关文章:

sql - 对每行的列进行 SUM 计算的 Select 查询应该是什么?

php - 团队日程表的 MySQL 查询

mysql - 根据 IF 条件跳过查询字段

php - 在数据源中找不到 Cake PHP 表

php - Facebook 发布带有链接和大图的帖子

PHP Triple DES ECB 加密/解密的 Java 等效项

php - Left Join 1 table to multiple tables in MYSQL

php - 在 Mysql Date 中转换日期选择器 - PHP

php - 在亚马逊 Linux 上安装 PHP 的 mongo 驱动程序时出错

PHP复选框数组将 "Array"输入MySQL数据库