我目前正在尝试更新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)
这应该工作:
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)
| 归档时间: |
|
| 查看次数: |
21863 次 |
| 最近记录: |