human
SQLSTATE [HY093]：無効なパラメーター数：バインドされた変数の数はトークンの数と一致しません
gpt
このエラーは、SQLステートメントがあることを意味しますか？パラメーター（バインドされた変数のプレースホルダー）ですが、実際にはその多くの変数をステートメントにバインドしませんでした。
たとえば、SQLが次の場合：
id =？とname =？

次に、2つの変数をステートメントにバインドする必要があります - おそらく次のような呼び出しがあります。
stmt.bind_param（ 'ii'、$ id、$ name）

ただし、1つの変数のみをバインドする場合、バウンド変数の数（1）の数がSQLのトークン（2）の数と一致しないため、このHY093エラーが発生します。
したがって、SQLステートメントのプレースホルダーの数と一致するように、正しい数の変数をバインドすることを確認する必要があります。
human
私が持っているプレースホルダーの数をどのように決定しますか？
gpt
SQLステートメントのプレースホルダーの数は、の数を数えることで決定できますか？その中のパラメーター。たとえば、私の前の例では、2つのパラメーターがありますか？パラメーター：「id =？」および「name =？」。
1つのパラメーターを修正値に変更することにより、1つのプレースホルダーしかありません。例えば：
id =？およびname = "John Doe"

ご覧のとおり、この変更されたSQLステートメントでは、「名前」パラメーターがプレースホルダーから「John Doe」に変更されたため、「ID」パラメーターのみがプレースホルダーです。