gpt4 book ai didi

php - 在何处插入 MySQL 和 PHP

转载 作者:行者123 更新时间:2023-11-29 09:57:55 26 4
gpt4 key购买 nike

在 MySql 中,可以使用 WHERE 为多个用户进行更新,例如:

 $users = ['user1', 'user2', 'user3'];
$amount = 25;
$users = implode(", ",array_keys($users));
"UPDATE balances SET balance = (balance + $amount) WHERE obj_id IN ($users)"

问题是:是否可以在查询前不使用 foreach 循环的情况下进行类似于下面示例的 WHERE IN 插入?

 "INSERT INTO balances ('balance', 'user_id') VALUES (($amount), user_id) WHERE user_id IN ($users)"

最佳答案

MySQL 不支持这一点,但假设您使用的是 PHP(您没有指定这一点,但您的代码看起来像 php),解决方法相当简单。

另外,请记住,INSERT INTO 会创建新行,因此 WHERE 不适用。它添加到底部,检索行时可以使用 WHERE 和 ORDER BY 对数据进行排序。

循环数组的每个值,迭代它,并在每次迭代时执行一个查询。

你的代码将是这样的:

<?php

//create array
$user_ids = array('User1', 'User2', 'User3');
$amount = 25;

// go through each value in the array and execute the query
foreach( $user_ids as $userid )
{
mysqli_query "INSERT INTO `balances` ('balance', 'user_id')
VALUES (($amount), user_id)";
}
?>

如果您想将其限制为只有一个查询,您可以执行以下操作:

<?php

//create array
$user_ids = array('User1', 'User2', 'User3');
$amount = 25;

// go through each value in the array and prepare the insert

$values = 'VALUES';

foreach( $user_ids as $userid )
{
$values .= '(' . $amount . ',' . $userid .'),';
}
$values = substr($values,0,-1);

mysqli_query "INSERT INTO `balances` ('balance', 'user_id') " . $values;
?>

关于php - 在何处插入 MySQL 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524585/

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