Er zijn hier twee grote problemen. De eerste is klein. Deze regels code zullen nooit werken:
$db->bindParam(1,`account`);
$db->bindParam(1,'$dbb'); //line 17
Dit komt omdat ze allebei proberen bindParam
. aan te roepen als een tekenreeks . Dit is onmogelijk. bindParam
heeft een verwijzing naar een variabele nodig. Dit is de reden waarom u de foutmelding "kan parameter 2 niet doorgeven via referentie" krijgt:u kunt alleen variabelen doorgeven op referentie.
Elk van deze zou echter werken:
$db->bindParam(1, $dbb); // call bindParam on a variable
$db->bindValue(1, 'account'); // call bindValue on a string literal
Het meer fundamentele probleem is echter uw begrip van voorbereide verklaringen. Het idee van voorbereide verklaringen is niet eenvoudige vervanging van strings in een andere string. Het gaat in wezen om de scheiding van de structuur van de query en de gegevens. De naam van een tabel wordt beschouwd als onderdeel van de structuur van de query, niet als onderdeel van de gegevens. U moet de tabelnaam in de oorspronkelijke query plaatsen. Je eerste code is de manier om het te doen.
$db = $conn->prepare( 'CREATE SCHEMA IF NOT EXISTS account');