gpt4 book ai didi

php - mysql一条语句中的多个查询

转载 作者:行者123 更新时间:2023-11-29 04:14:18 25 4
gpt4 key购买 nike

我在 stackoverflow 上四处寻找类似的问题,但没有找到我正在寻找的确切内容,所以这里开始吧。在 phpMyAdmin 中,您可以在一个语句中有多个查询,它会为您执行,例如:'

UPDATE `test` WHERE `test2` = 4;
UPDATE `test` WHERE `test4` = 8;
UPDATE `test` WHERE `test8` = 1;

现在,如果我尝试在 PHP 中做类似的事情,它根本不起作用。例如:

 $test = 'UPDATE `test` SET `value` = "123" WHERE `test2` = 4;
UPDATE `test` SET `value` = "321" WHERE `test4` = 8;
UPDATE `test` SET `value` = "533" WHERE `test8` = 1;';
mysql_query($test);

给出和错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; UPDATE test SET value = "123" WHERE test2 = 4; UPDATE test SE' at line 1

是否有可能在一个语句中组合,比如说,像上面那样的多个查询?我想在以下情况下这样做:(这背后的逻辑可能很糟糕,但我没有太多的MySQL经验,所以如果有更好的方法请告诉我)

以下循环了几次:

function SaveConfig($name, $value)
{
global $sql_save_query;
$sql = 'SELECT * FROM `config` WHERE `name` = "'.$name.'"';
$res = mysql_query($sql);

if($res)
{
$sql_save_query .= 'UPDATE `config` SET value = "'.$value.'" WHERE `name` = "' .$name. '"; '."\n";
}
else
{
$sql_save_query .= 'INSERT INTO `config`(`id`,`name`,`value`) VALUES("","' .$name. '","' .$value. '"); '."\n";
}
}

然后在循环完成后运行:

mysql_query($sql_save_query);

这给出了一个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; UPDATE config SET value = "" WHERE name = "fcolour2"; UPDATE config SE' at line 1

现在我的另一个选择(在我看来)是在每个循环之后只执行一个 SQL 查询,一次一个查询。但这不是不好/慢/不好的做法吗?

最佳答案

PHP API 禁止您在一次调用中发出多个查询以减少 SQL injection 的可能性。攻击您的代码(想想如果我将 '; UPDATE users SET admin=1 WHERE username='hacker' 作为用户名传递给您的登录脚本会发生什么)。您需要执行多个语句,或者将语句的逻辑包装到一个语句中(这在您的情况下是不可能的)。

关于php - mysql一条语句中的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642336/

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