在哪里插入mysql和php

hsgswve4  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(262)

在mysql中,可以使用where-in对多个用户进行更新,例如:

$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)"
bkhjykvo

bkhjykvo1#

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;
?>

相关问题