这已经惹恼了我一段时间了,我试过了:
$stmt = self::$conn->prepare("
INSERT INTO `database`.`table` (
`facebook_id` ,
`email` ,
`first_name` ,
`last_name` ,
`gender`
)
VALUES (
':id', NULL , ':first_name', ':last_name', NULL
);
");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':first_name', $first_name);
$stmt->bindParam(':last_name', $last_name);
$stmt->execute();
bindParam部分显然不起作用,因为id变为0,姓和名在数据库中变为:first_name和:last_name。所以我试着这样做:
$stmt->execute(array(
':id' => 457897541,
':first_name' => $first_name,
':last_name' => $last_name
));
再次得到id = 0,和姓=:first_name,:last_name在数据库中!我哪里做错了?
在准备语句时,不需要引用绑定的参数。事实上,正如@Voictus所说,你不能这样做——它将它们从变量转换为实际的字符串。prepare()
电话将为您提供报价。
你应该这样写:
$stmt = self::$conn->prepare("
INSERT INTO `database`.`table` (
`facebook_id` ,
`email` ,
`first_name` ,
`last_name` ,
`gender`
)
VALUES (
:id, NULL , :first_name, :last_name, NULL
);
");
另外-如果您的insert中有字段为null,您不妨省略它们