PHPのmysql改良ライブラリを使用して、VARBINARY型の主キーを持つmysqlのテーブルに行を挿入する必要があります。 このフィールドの内容は、計算されたsha1ハッシュです。PHP-プリペアドステートメントを使用してmysqlにバイナリデータを挿入する
$mysqli->$query("INSERT INTO table (id, field1) VALUES (0x" . $id . ",'" . $field1 . "')");
をしかし、私は準備されたステートメントとして、それを実行しようとしたとき、私はそれを行う方法を見つけ出すことはできません:私は、クエリに古い方法を実行した場合
は、それが完璧に動作します。
if($stmt = $mysqli->prepare("INSERT INTO table (id, field1) VALUES (?, ?)")) {
$stmt->bind_param('ss', "0x".$id, $field1);
//execute statement
}
それは内容がこのフィールドに対して大きすぎたという例外がスローされます: 場合、私は同等のアクションを実行します。私は、BLOBフィールドとしてそれを挿入しようとすると:
if($stmt = $mysqli->prepare("INSERT INTO table (id, field1) VALUES (?, ?)")) {
$stmt->bind_param('bs', $id, $field1);
//execute statement
}
それは何のエラーを与えていない、行が挿入されますが、識別子フィールドは現在(空、nullではない)空です。
私はクエリをミックスして、文字列に連結したIDと準備されたステートメントのバインドパラメータとして他のフィールドを入力することができますが、私はちょうどこれとおそらくそれを挿入する正しい方法がわかっています将来誰かを助けるでしょう。
何の値あなたは$ IDと$フィールド1のために持っていないことを確認してください? $ idは整数ですか?もしそうなら、そのようにバインドしてみましたか? 'stmt-> bind_param( 'is'、$ id、$ field1); ' – nash
$ idの値はsha1ハッシュです。これは整数ではありません。他のフィールドは問題の原因ではありませんが、主に文字列です。 –
この問題を解決しながら準備済みステートメントのセキュリティを維持しようとするものに加えて、 – HoldOffHunger