私はこのことから...エラー:SQLSTATE [hy093]:無効なパラメータ番号
を行くのphpMyAdminで実行されるSQL文の中echo'ed出力に変換することができます:
INSERT INTO crumbs (ip_address,ip_address_2,device_info,user_id,connections) VALUES(?,?,?,?,?)Value:'00.000.000.000', '00.000.000.000', 0,0000, 1
この中へ:
INSERT INTO crumbs (ip_address,ip_address_2,device_info,user_id,connections) VALUES('00.000.000.000', '00.000.000.000', 0,0000, 1)
それはエラーが、しかしそれはPHを通じて実行しない、DBにデータを挿入P-PDO ...
付:
SQLSTATE[HY093]: Invalid parameter number
コード:
$columns = '('.implode(',', array_keys($user_connection)).''.",user_id,connections)";
$inserts="(".implode(',',array_fill(0,count($user_connection)+2, '?')).")";
$values = implode(', ',($user_connection)).",$user_id, 1";
$sql_insert = "INSERT INTO crumbs ".$columns." VALUES".$inserts;
$stmt = $this->_db->prepare($sql_insert);
$stmt->execute(array($values));
編集・追加$のuser_connection
$user_connection [ 'ip_address'] = "'".$_SERVER['REMOTE_ADDR']."'";
$user_connection [ 'ip_address_2']="'".$_SERVER['HTTP_X_FORWARDED_FOR']."'";
$user_connection ['device_info']=0;
このエラーは、SQLコードの実行中に発生します。私はすべての例を見てきましたが、それと同等のものは何も見つかりませんでした。私はコードがローカルで実行されているので、それが単純なものだと思っています。
// ..code..
$values = $user_connection;
$values[] = $user_id;
$values[] = 1;
// ..code..
$stmt->execute($values);
問題の説明:あなたは、複数の?
プレースホルダを持っている場合
は、あなたが制限されるために各値を渡すことができます。このような何かをしなければならない
で終わる(1)の値と同じ量を提供していませんでしたので、しかし、私はほとんど例外なく、配列 'または上記のように私の実行コマンドをカプセル化します:execute(array($ values));値はコンマで区切られた配列の値に変換されます(つまり、私の経験になります)。しかし、私は別の配列にカプセル化しようとします。 – Chris
これはうまくいきましたが、配列()がコード内のどこにでも動作するこのインスタンスではうまくいかない理由が混乱しています。 – Chris
おそらくどこにいても少し違っています。私はそれを見ずに確実に言うことができません(値が正しくデータベースに保存されていることを確認してください) – FirstOne