[英]Updating multiple SQL fields with PHP
对不起,我的业余知识很抱歉。 我正在为用户创建数据库的基础知识,我已经很好地进行了注册,但是我无法正常运行更新功能。
注册功能
mysql_query("INSERT INTO `users` ($fields) VALUES ($data)");
其中$ fields和$ data取自后填充数组:
$fields = '`' . implode('`, `', array_keys($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';
更新功能
但是,使用此方法更新记录不起作用。 我尝试了2种方法:
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']
);
UPDATE的语法是使用SET名称=值,名称=值,... 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 。 它们使用起来有点复杂,但是值得学习。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.