[英]PDO error when trying to insert to iSeries DB2 with php on Linux
[英]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.