Тук има два големи проблема. Първият е незначителен. Тези редове код никога няма да работят:
$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');