我如何在数据库PDO中插入此查询?
public function insertPessoa($estado){
$this->$estado = $estado;
echo "<pre>";
$linkDeputados =
file_get_contents('https://dadosabertos.camara.leg.br/api/v2/deputados?siglaUf='.$estado.'&ordem=ASC&itens=100&ordenarPor=nome&pagina=1');
$json = json_decode($linkDeputados);
$deputados = (object) $json;
$connectar = new PDO("pgsql:host=localhost; dbname=postgres", "postgres", "123456");
foreach ($deputados->dados as $objeto => $o)
{
$sql = " INSERT INTO deputados
( id,
'nome',
'estado',
'web_partido',
'sigla_partido',
'url_foto'
)
VALUES
(
{$o->id},
'{$o->nome}',
'{$o->siglaUf}',
'{$o->uriPartido}',
'{$o->siglaPartido}',
'{$o->urlFoto}'
)";
}
$query = $connectar->prepare($sql);
$query->bindValue(':id', $o->id);
$query->bindValue(':nome', $o->nome);
$query->bindValue(':estado', $o->siglaUf);
$query->bindValue(':web_partido', $o->uriPartido);
$query->bindValue(':sigla_partido', $o->siglaPartido);
$query->bindValue(':url_foto', $o->urlFoto);
$query->execute();
if($query){
echo 'Registro Inseridos com Sucesso!<br>';
}
}
这给我一个错误:
警告:PDOStatement :: bindValue():SQLSTATE [HY093]:无效 参数号:: id in 第79行的C:\ xampp \ htdocs \ pesquisaDeputados \ pessoa.class.php
答案 0 :(得分:0)
Mysqli在您的sql查询中找不到:id
字符串,因为您注入的对象不使用预准备语句
你的sql语句应该是:
$sql = " INSERT INTO deputados
( id,
'nome',
'estado',
'web_partido',
'sigla_partido',
'url_foto'
)
VALUES
(
:id,
:nome,
:estado,
:uri_partido,
:sigla_partido,
:url_foto
)";
你需要绑定参数而不是值
答案 1 :(得分:0)
如果你查看文档(http://php.net/manual/en/pdo.prepare.php),你会发现你应该在insert语句的值列表中使用:id,:nome,:estado
而不是直接插入值。