-1

这让我烦恼了一段时间,我试过这个:

            $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 andn last name = :first_name, :last_name 在数据库中!我在这里做错了什么?

4

1 回答 1

2

当你准备一个语句时,你不需要引用绑定的参数。事实上,正如@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
        );
        ");

Additinally - 如果您的插入中有 NULL 字段,您不妨忽略它们。

于 2013-05-27T12:37:44.727 回答