我正在尝试使这段代码正常工作,但它有些地方不对。
<?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 > @b
和 somthing = 'thething'
时才会更新。
关于php - MYSQL 多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49095399/