Ошибка при попытке вставить с PHP / PDO / MySQL - PullRequest
0 голосов
/ 07 марта 2020

Я написал в StackBr, но перенаправил сюда, поэтому, если гринго могут помочь, я был бы признателен за это

Попытка сделать вставку с двумя параметрами, и я получаю это return:

PDOStatement :: bindValue () ожидает, что параметр 3 будет int, строка указана в.

Нет идентификатора meu banco tenho (AUTO_INCREMENT) ), ном (VARCHAR) и Localizaçao (VARCHAR). Моя функция для вставки - это

public function inserir() { //create $query = 'insert into tb_usuarios(name,localizacao)values(:name,:location:)'; $stmt = $this->conexao->prepare($query); $stmt->bindValue('$name','$location', $this->location->__get('name','location')); $stmt->execute(); }

Я уже пытался вставить Id в запрос на вставку, и я не получил никаких результатов, этот код от другого проект, который я сделал вставку только одного поля, но все остальные 3 поля в таблице были Aut-increment

1 Ответ

0 голосов
/ 08 марта 2020

Функция PDO bindValue() принимает один параметр за раз. Вы не можете связать их всех одним вызовом.

Код, который вы пытались написать, должен выглядеть следующим образом:

public function inserir() { //create
        $query = 'insert into tb_usuarios(name,localizacao)values(:name,:location:)';
        $stmt = $this->conexao->prepare($query);
        $stmt->bindValue('name',$this->location->__get('name'));
        $stmt->bindValue('location',$this->location->__get('location'));
        $stmt->execute();
    }

Вы также можете создать массив имени параметра => пары значений и передайте этот массив в execute(), что делает то же самое, что и использование bindValue() для каждого параметра.

public function inserir() { //create
        $query = 'insert into tb_usuarios(name,localizacao)values(:name,:location:)';
        $stmt = $this->conexao->prepare($query);
        $params = [
          'name'=>$this->location->__get('name'),
          'location'=>$this->location->__get('location')
        ];
        $stmt->execute($params);
    }

Обратите внимание на другое отличие: для заполнителя, такого как :name, вы можете использовать параметр клавиша ':name' или 'name', но '$name' не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...