php 使用PDO prepare和bindParam插入数据库表

nkhmeac6  于 2022-12-10  发布在  PHP
关注(0)|答案(3)|浏览(169)

简单地说,有人能解释一下我在这里做错了什么吗?我只是试图用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

vddsk6oq

vddsk6oq1#

对A.O的回答进行扩展,以下几点也是正确的:

$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));

可能只是个人喜好,但我发现这种语法要清晰得多。

omtl5h9j

omtl5h9j2#

语法不正确,请尝试以下操作:

$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();
yzuktlbb

yzuktlbb3#

$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();

相关问题