bind_param()で「Number of variables doesn’t match number of parameters」が出る時
PHPからMySQLのデータをプリペアドステートメントで検索する時、どこも間違ってないはずなのにbind_param()する時に以下のエラーが出ました
mysqli_stmt::bind_param(): Number of variables doesn’t match number of parameters in prepared statement in hoge php on line 1
略:パラメータと値の数がマッチしないよ
ちなみに、この時に実行したSQLは以下のようなものです
SELECT name,'?番' AS No
FROM user;
このSQL文に対して、1個の値と型(s)をちゃんと指定してます
にも関わらずエラーが出る
解決方法
バインドするプレースホルダ?を文字列から出す
SELECT name,CONCAT(?,'番') AS No
FROM user;
CONCATは文字列を結合する関数です
一旦バインドを実行して、?を値に置換した後に文字列結合するというわけです
原因
バインドするプレースホルダ?が、文字列の中に入ってると正しく置換対象として認識されないためです
なので最初のSQL文だと、プレースホルダがないのにバインドする値を指定してるので、機械側からしたら、
「置き換えたい値はわかったけど、SQLの中にプレースホルダーねーじゃん!」となっていたというお話です
ディスカッション
コメント一覧
まだ、コメントがありません
みんながLoadingしてる記事
新たにPostされた記事
: JS
Dropzone.jsで編集画面を作る(アップロード済みの画像を表示)
前回からの続きです Dropzone.jsを使って画像アップロードの編集画面を作 ...: Laravel
LaravelでDBテーブルをupdateした時に、同時に更新した値を取得する裏技[Laravel8]
通常Eloquentのsaveやupdateでは、実行時に更新した値の結果を返し ...: JS
忘れがちなJqueryのあれやこれ
Jqueryって何でこんなに忘れやすいのでしょうか 呪文にかかったくらい覚えられ ...: 資格
理系エンジニアの僕がTOEICで800点をとるためにした勉強
先日、TOEIC L&R テストで800点を超えました 今回は理系エンジ ...: Laravel
[Laravel8]npm run devが失敗する場合の解決法
Laravel8にJetstreamをインストールする際、npm run dev ...HashMap
Created by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
そのほか