Php 在DB PDO中插入值字符串

Php 在DB PDO中插入值字符串,php,postgresql,pdo,Php,Postgresql,Pdo,我正在尝试执行此查询,该查询返回false,并显示消息“INSERT的目标列比我理解的表达式多”,但是否有方法将数组或字符串与我要插入的值一起使用?我正在使用带有PDO的postgres $params = '"param1", "param2", "param3", "param4", "param5"'; $query = $conn->query = 'INSERT INTO myTable ( "value1", "val

我正在尝试执行此查询,该查询返回false,并显示消息“INSERT的目标列比我理解的表达式多”,但是否有方法将数组或字符串与我要插入的值一起使用?我正在使用带有PDO的postgres

$params = '"param1", "param2", "param3", "param4", "param5"';
$query = $conn->query = 'INSERT INTO myTable (
               "value1",
               "value2",
               "value3",
               "value4",
               "value5") VALUES(:params)';
$query->execute(array('params' => $params));

在您的代码中,语句只有
value1
列的一个参数,其值为
'“param1”、“param2”、“param3”、“param4”、“param5”
,然后消息说此请求需要
value2
value3
value4
value5
列的值

您可以尝试使用以下代码:

// using named placeholders
$params = array(
     "param1" => "param1",
     "param2" => "param2",
     "param3" => "param3",
     "param4" => "param4",
     "param5" => "param5"
);
$query = $conn->query = '
    INSERT INTO myTable ("value1", "value2", "value3", "value4", "value5")
    VALUES(:value1, :value2, :value3, :value4, :value5)
';
$query->execute($params);

// using unnamed placeholders
$params = array("param1", "param2", "param3", "param4", "param5");
$query = $conn->query = '
    INSERT INTO myTable ("value1", "value2", "value3", "value4", "value5")
    VALUES(?, ?, ?, ?, ?)
';
$query->execute($params);

文档:

您试图将输入作为数据和代码的混合体处理。这正是事先准备好的声明所要避免的。它们的主要目的是从代码中分离数据。真正的问题是$params是如何以这种格式出现的。您应该阅读以了解准备语句的正确用法。上面的代码片段有太多的问题。好的,我将尝试阅读手册,然后编辑代码片段以使其更合适。