私はCodeigniterで、ユーザーがアップロードした画像(CIアップロードライブラリを使用して管理)を取得し、SQLServerデータベースのvarbinary(max)フィールドに挿入するプロセスに取り組んでいます。私のコントローラーとモデルコードは次のとおりです。
if($this->upload->do_upload($upload_name)) {
//get temp image
$tmpName = $config['upload_path'] . $config['file_name'];
// Read it into $data variable
$fp = fopen($tmpName, 'rb');
$data = fread($fp, filesize($tmpName));
fclose($fp);
//insert into DB
$this->the_model->storeImage($data, $user_id);
//delete temp image
unlink($config['upload_path'] . $config['file_name']);
}
/***** Function from the_model ************/
function storePropertyImage($image_data, $user_id) {
$my_db = $this->load->database('admin');
$stmt = "INSERT INTO my_table (UserID, ImageData) VALUES (" . $my_db->escape($user_id) . ", " . $my_db->escape($image_data) . ")";
$insert = $my_db->query($stmt);
return $insert;
}
これはすべて問題ないようですが、コードを実行するとエラーが発生します。
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters'
in {my app path}\helpers\mssql_helper.php on line 213
このエラーメッセージをグーグルで調べたところ、モデルに送信される$ data値にコロン文字が含まれているため、名前付きパラメーターを渡そうとしているとDBに思わせる結果が示されているようです。私がいないとき。ただし、特定の使用例に一致するレポートや、エラーを修正する方法について多くの情報があるレポートを見つけることができませんでした。
私がつまずく可能性がある場所についての洞察をいただければ幸いです。