7

简单来说,有人可以解释我在这里做错了什么 - 我只是想用 prepare 和 bindParam 插入数据库,这是在所有字段中插入 0 和 Null。

$sql = $db->prepare("INSERT INTO db_fruit VALUES (id=? ,type=? ,colour=?)");
$sql->bindParam(1, $newId);
$sql->bindParam(2, $type);
$sql->bindParam(3, $colour);
$sql->execute()

顺便说一句:此方法一直适用于 UPDATE 等,但在这种情况下不适用于 INSERT

4

3 回答 3

18

扩展 AO 的答案,以下内容也是有效的:

$sql = $db->prepare("INSERT INTO db_fruit (id, type, colour) VALUES (? ,? ,?)");
$sql->execute(array($newId, $name, $color));

和:

$sql = $db->prepare("INSERT INTO db_fruit (id, type, colour) VALUES (:id, :name, :color)");
$sql->execute(array('id' => $newId, 'name' => $name, 'color' => $color));

可能只是个人喜好,但我发现这种语法更简洁。

于 2013-10-25T21:52:40.517 回答
10

你的语法不正确,试试这个:

$sql = $db->prepare("INSERT INTO db_fruit (id, type, colour) VALUES (? ,? ,?)");
$sql->bindParam(1, $newId);
$sql->bindParam(2, $name);
$sql->bindParam(3, $colour);
$sql->execute();
于 2013-10-25T21:40:24.377 回答
1
$sql = $db->prepare("INSERT INTO db_fruit (`id`, `type`, `colour`) VALUES (:id, :name, :colour)");
$sql->bindParam(':id', $newId, PDO::PARAM_INT);
$sql->bindParam(':type', $type, PDO::PARAM_INT);
$sql->bindParam(':colour', $colour, PDO::PARAM_STR);
$sql->execute();
于 2016-02-23T23:33:32.797 回答