php中使用关联数组的mysql update语句

fzsnzjdm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(454)

我已经读过这个主题在php中使用关联数组构造update语句,但是它和我需要的有点不同。
我有一张table t1 .

+--------------+----------------+----------------+------------+
| money        | exp            | uid            | remark     |
+--------------+----------------+----------------+------------+
| 9999         | 9999           | 1              |            |
| 1234         | 567            | 2              |            |
| 8887         | 88             | 3              |            |
+--------------+----------------+----------------+------------+

我想创建一个php function 打电话 jnupdateuser 要更新此表,请执行以下操作:

jnupdateuser(array('money'=>10000,'exp'=>10000),1);

之后的数据将是:

+--------------+----------------+----------------+------------+
| money        | exp            | uid            | remark     |
+--------------+----------------+----------------+------------+
| 10000        | 10000          | 1              |            |
| 1234         | 567            | 2              |            |
| 8887         | 88             | 3              |            |
+--------------+----------------+----------------+------------+

如果你这样做: jnupdateuser(array('remark'=>'None'),2); 数据如下:

+--------------+----------------+----------------+------------+
| money        | exp            | uid            | remark     |
+--------------+----------------+----------------+------------+
| 9999         | 9999           | 1              |            |
| 1234         | 567            | 2              | None       |
| 8887         | 88             | 3              |            |
+--------------+----------------+----------------+------------+

我的代码如下:

function jnupdateuser($jnparams = array(),$uids){

    $conditionStrings = array();
    foreach ($jnparams as $column => $value) {
        //how to create this part to update my table? or maybe I was totally wrong?
    }

    return DB::query("UPDATE ".DB::table('game_jnmx_user')." SET ??? = ??? WHERE uid = $uids "); 
}
``` `DB::query` 是我的模板语言,与 `mysqli_query` ,  `DB::table` 模板语言;
谢谢您。
sq1bmfud

sq1bmfud1#

试着这样做:

function jnupdateuser ($jnparams = [], $uid)
{
    if (empty($jnparams)) {
        return true;
    }

    $conditions = [];
    $uid = (int) $uid;

    foreach ($jnparams as $column => $value) {
        $conditions[] = "`{$column}` = '{$value}'";
    }

    $conditions = implode(',', $conditions);

    return DB::query("UPDATE ".DB::table('game_jnmx_user')." SET {$conditions} WHERE uid = {$uid}");
}

它根据输入参数构建集合,我添加了一些验证。请注意,在这里您应该以某种方式对放入数据库的数据进行转义或清理,因为它容易受到sql注入的攻击。

相关问题