Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbank erstellen mit pdo in php

Hier gibt es zwei große Probleme. Die erste ist gering. Diese Codezeilen werden niemals funktionieren:

$db->bindParam(1,`account`);
$db->bindParam(1,'$dbb'); //line 17

Dies liegt daran, dass beide versuchen, bindParam aufzurufen als String . Das ist unmöglich. bindParam benötigt einen Verweis auf eine Variable. Aus diesem Grund erhalten Sie den Fehler "Parameter 2 kann nicht als Referenz übergeben werden":Sie können nur Variablen übergeben per Referenz.

Beides würde jedoch funktionieren:

$db->bindParam(1, $dbb); // call bindParam on a variable
$db->bindValue(1, 'account'); // call bindValue on a string literal

Das grundlegendere Problem ist jedoch Ihr Verständnis von vorbereiteten Aussagen. Die Idee vorbereiteter Anweisungen ist nicht einfache Ersetzung von Zeichenfolgen in eine andere Zeichenfolge. Grundsätzlich geht es um die Trennung der Struktur der Abfrage von den Daten. Der Name einer Tabelle wird als Teil der Struktur der Abfrage betrachtet, nicht als Teil der Daten. Sie müssen den Tabellennamen in die ursprüngliche Abfrage einfügen. Ihr erster Code ist der Weg, es zu tun.

$db = $conn->prepare( 'CREATE SCHEMA IF NOT EXISTS account');