如何在数据库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 C:\xampp\htdocs\pesquisaDeputados\pessoa.class.php 在第 79 行
> 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
)";
并且您需要绑定参数而不是值
如果您查看文档 (http://php.net/manual/en/pdo.prepare.php),您会发现您应该在 insert 语句的值列表中使用 :id,:nome,:estado
,而不是直接插入值。