Mamy tu do czynienia z dwoma dużymi problemami. Pierwszy jest niewielki. Te wiersze kodu nigdy nie zadziałają:
$db->bindParam(1,`account`);
$db->bindParam(1,'$dbb'); //line 17
Dzieje się tak, ponieważ obaj próbują wywołać bindParam
jako ciąg . To jest niemożliwe. bindParam
potrzebuje odniesienia do zmiennej. Dlatego pojawia się błąd „nie można przekazać parametru 2 przez odniesienie”:możesz przekazać tylko zmienne przez odniesienie.
Każdy z nich jednak zadziała:
$db->bindParam(1, $dbb); // call bindParam on a variable
$db->bindValue(1, 'account'); // call bindValue on a string literal
Bardziej fundamentalnym problemem jest jednak twoje zrozumienie przygotowanych wypowiedzi. Idea przygotowanych oświadczeń nie proste podstawienie napisów do innego napisu. Zasadniczo chodzi o oddzielenie struktury zapytania od danych. Nazwa tabeli jest uważana za część struktury zapytania, a nie za część danych. Musisz umieścić nazwę tabeli w oryginalnym zapytaniu. Twój pierwszy kod to sposób na zrobienie tego.
$db = $conn->prepare( 'CREATE SCHEMA IF NOT EXISTS account');