首先,如果在其他地方回答了这个问题,我深表歉意,但我找不到任何东西。
我对以下代码有问题:
function register_user ($register_data) {
global $db;
array_walk ($register_data, 'array_sanitize');
$register_data ['password'] = md5 ($register_data ['password']);
$fields = '`' . implode ('`, `', array_keys ($register_data)) . '`';
$data = '\'' . implode ('\', \'', $register_data) . '\'';
$query = $db -> prepare ("INSERT INTO `users` (:fields) VALUES (:data)");
$query -> bindParam (':fields', $fields);
$query -> bindParam (':data', $data);
$query -> execute ();
}
问题是这被正确执行但查询没有运行并且行没有插入数据库中。
现在,如果我这样做:
$query = $db -> prepare ("INSERT INTO `users` ($fields) VALUES ($data)");
//$query -> bindParam (':fields', $fields);
//$query -> bindParam (':data', $data);
$query -> execute ();
一切都像魅力一样,所以我猜问题在于我如何将数据传递给占位符。
有人可以向我解释为什么这不起作用吗?我想首先正确理解它。
提前感谢您的帮助。