使用PHP更新多个SQL字段

时间:2015-02-24 17:24:45

标签: php mysql sql insert

提前抱歉我的业余知识。我正在创建用户数据库的基础知识,我已经注册工作正常,但我无法使我的更新功能正常工作。

注册功能

mysql_query("INSERT INTO `users` ($fields) VALUES ($data)");

其中$ fields和$ data来自填充后的数组:

$fields =  '`' . implode('`, `', array_keys($register_data)) . '`';
$data   =  '\'' . implode('\', \'', $register_data) . '\''; 

更新功能

但是,使用此方法更新记录不起作用。我尝试了两种方法:

mysql_query("UPDATE `users` SET ($fields) VALUES ($data) WHERE `user_id` = $user_id");

mysql_query("UPDATE `users` SET $fields = $data WHERE `user_id` = $user_id");

第一个SQL函数不起作用(和INSERT一样烦人),第二个SQL函数只更新了我的数组中的一个值。

有人可以纠正我应该如何做到这一点?有关信息我的数组如下:

$save_data = array(
    'username'      => $_POST['username'],
    'password'      => $_POST['password'],
    'email'         => $_POST['email'], 
    'first_name'    => $_POST['first_name'],
    'last_name'     => $_POST['last_name'], 
    'bio'           => $_POST['bio']
);

1 个答案:

答案 0 :(得分:1)

UPDATE的语法是使用SET name = value,name = value,... http://dev.mysql.com/doc/refman/5.0/en/update.html

所以试试这个:

// Prepare the name-value pairs for the SET clause.
$set = array();
foreach ($register_data as $key => $value) {
    $set[] = "`$key` = '$value'";
}
$set = implode(', ', $set);

// Run the query.
mysql_query("UPDATE `users` SET $set WHERE `user_id` = $user_id");

作为旁注,正如其他人所指出的那样,不建议使用mysql_query()。 有http://php.net/manual/en/book.mysqli.php,但更好(显然),http://php.net/manual/en/book.pdo.php。它们使用起来有点复杂,但值得小学习曲线。