ここには2つの大きな問題があります。最初はマイナーです。これらのコード行は機能しません:
$db->bindParam(1,`account`);
$db->bindParam(1,'$dbb'); //line 17
これは、両方がbindParam
を呼び出そうとしているためです。 文字列として 。不可能だよ。 bindParam
変数への参照が必要です。これが、「参照によってパラメータ2を渡すことができない」エラーが発生する理由です。変数のみを渡すことができます。 参照による。
ただし、これらのいずれも機能します:
$db->bindParam(1, $dbb); // call bindParam on a variable
$db->bindValue(1, 'account'); // call bindValue on a string literal
ただし、より根本的な問題は、準備されたステートメントの理解です。プリペアドステートメントの考え方はではありません 文字列を別の文字列に単純に置き換える。基本的には、クエリの構造をデータから分離することです。テーブルの名前は、データの一部ではなく、クエリの構造の一部と見なされます。元のクエリにテーブル名を入力する必要があります。最初のコードはそれを行う方法です。
$db = $conn->prepare( 'CREATE SCHEMA IF NOT EXISTS account');