php - MYSQL 多查询

标签 php mysql

我正在尝试使这段代码正常工作,但它有些地方不对。

<?php
    $server = "localhost";
    $username = "root";
    $password = "";
    $database = "db";
    $connection = mysqli_connect($server, $username, $password, $database);
    if(mysqli_connect_errno())
    {
        echo("Failed-Connect");
        exit();
    }
    else
    {
        if(mysqli_ping($connection))
        {
            $query =
            "
            SET @a = 5;
            SET @b = 2;
            SELECT @c := col FROM whatever WHERE doesn't matter;
            IF @a > @b THEN
            UPDATE table2 SET col1 = col1 + 1, col2 = @c WHERE somthing = 'thething';
            END IF;
            ";
            $result = mysqli_multi_query($connection, $query);
            if($result)
            {
                echo("Done");
            }
        }
        else
        {
            echo("Failed-Ping");
        }
    }
    mysqli_close($enter code hereconnection);
    ?>

这段代码没有错误,但它没有更新行。当我删除 IF 语句时,它可以完美运行,但我需要该 IF 语句来验证某些内容。知道有什么问题吗?如果代码有重大问题,你能给我提供替代方案吗?

最佳答案

多查询不等于存储例程和代码块,例如:

IF @a > @b THEN
  UPDATE table2 SET col1 = col1 + 1, col2 = @c WHERE somthing = 'thething';
END IF;

仅在存储例程的上下文中有效。所以给定的代码有错误,如果您添加错误检查,MySQL 会通知您。

你可以这样写:

UPDATE table2 SET col1 = col1 + 1, col2 = @c WHERE somthing = 'thething' AND (@a > @b);

因此只有在 @a > @bsomthing = 'thething' 时才会更新。

关于php - MYSQL 多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49095399/

相关文章:

php - 如何在magento 1.9.2社区版中维护自定义登录和注册帐户模块的自定义 session

最近2小时的Mysql结果集

mysql - SQL TRIGGER更新时从一个表到另一个表

PHP - 在div中显示来自mysql文本字段的html

PHP:SELECT * FROM 的 echo 中的表出现问题

PHP - 对通过 SSH 创建的目录的权限被拒绝

php - 处理 HTTP 请求

php - 山魈回复

java - mysql中的日期比较

mysql - 使用索引使sql查询更快