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の中にプレースホルダーねーじゃん!」となっていたというお話です
ディスカッション
コメント一覧
まだ、コメントがありません
新たにPostされたDocs
: ツール関連
キーボードを銀軸から赤軸に買い替えた話
約3年半前、仕事で使うキーボードとしてARCHISS ProgresTouchの ...: スマホ
楽天モバイルがおすすめできない人の特徴とは?
楽天モバイルの最強プランをおすすめできない人の特徴を簡単にまとめてみました また ...: システム開発
なぜスクラムがつらいのか?開発現場が疲弊するのか?スクラムに対する違和感と共に原因を考えてみた
今ではどこの開発現場に行っても、やれスクラムスクラムと、まるでスクラムでもやって ...: Laravel
1つのテーブルを複数のテーブルと結合したい【Laravel10】
1つのテーブルを2つの異なるテーブルに対して結合したいケースがあったのでLara ...: Laravel
Laravelで複数画像アップロード時のvalidateを指定【Laravel10】
jQuery - Image Uploaderを使って、フォームから複数の画像を ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities