查询以插入带有 foreach 的数据库 PDO



如何在数据库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,而不是直接插入值。

最新更新