使用内爆数组PHP更新MySQL记录

JHa*_*ill 2 php mysql

我目前正在尝试更新MySQL数据库中的现有记录.在将更新的信息发送到数据库之前,将它放在一个数组中,在使用implode函数之前运行验证函数,以使我能够将数组插入数据库.这在添加新用户时工作正常,但我在使用内爆数组进行UPDATE查询时遇到困难.

我可以从内爆数组中指定单个字符串,以便我可以将用户名设置为原始数组中包含的用户名字符串吗?

我目前有这样的东西给我一个SQL错误 - 但是,我从没想到这会工作,因为SQL语法是错误的.

public function editUser($array, $userID) {
    $edited = 'User Ammended';
    $array['password'] = $this->hashPassword($array['password']);
    $implodeArray = '"'.implode( '","', $array ).'"';
    $sql = ('UPDATE user (email, password, firstName, lastName, officeID, departmentID, managerID, roleID, username) WHERE userID=$userID VALUES ('.$implodeArray.')');
    mysql_query($sql,$this->_db) or die(mysql_error());
    mysql_close();
}
Run Code Online (Sandbox Code Playgroud)

Sho*_*hoe 9

这应该工作:

public function editUser($array, $userID) {
        $edited = 'User Ammended';
        $array['password'] = $this->hashPassword($array['password']);
        /*Assuming array keys are = to database fileds*/
        if (count($array) > 0) {
            foreach ($array as $key => $value) {

                $value = mysql_real_escape_string($value); // this is dedicated to @Jon
                $value = "'$value'";
                $updates[] = "$key = $value";
            }
        }
        $implodeArray = implode(', ', $updates);
        $sql = ("UPDATE user WHERE userID=$userID SET $implodeArray");
        mysql_query($sql,$this->_db) or die(mysql_error());
        mysql_close();
}
Run Code Online (Sandbox Code Playgroud)

  • -1:如果`$ array`中有任何需要转义的内容,这将破坏查询. (2认同)