簡體   English   中英

嘗試使用 PHP / PDO / MySQL 插入時出錯

[英]Error when trying to insert with PHP / PDO / MySQL

嘗試使用兩個參數進行插入,我得到了這個回報:

PDOStatement::bindValue() 期望參數 3 為 int,字符串中給出。

沒有 meu banco tenho id(AUTO_INCREMENT)、nome(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

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();
    }

您還可以創建一個參數 name=>value 對的數組,並將該數組傳遞給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'不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM