查询使用foreach

时间:2017-10-25 03:56:31

标签: php database 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   第79行的C:\ xampp \ htdocs \ pesquisaDeputados \ pessoa.class.php

2 个答案:

答案 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而不是直接插入值。