Ich versuche, die Spalte einer Tabelle zu einer Zeichenfolge in jeder Zeile festzulegen, wenn die Spalte vorhanden ist. Allerdings erhalte ich SQL-Syntax-Fehler und kann nicht genau feststellen, was genau das Problem ist:Syntaxfehler mit SQL in PHP
while($db = mysqli_fetch_array(mysqli_query($conn, "SHOW DATABASES"))){
$id = $db['id'];
$sql = /** @lang text */
"SELECT IF(EXISTS(
SELECT DISTINCT `info`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('borrower')
AND TABLE_SCHEMA = '$db'))
BEGIN
UPDATE `info`
SET `borrower` = '****'
WHERE `id` = '$id'
END";
$query = mysqli_query($conn, $sql);
if (!$query){
// Deal with error
}
}
Die Syntaxfehler erhalte ich zurück:
information_schema
db1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
BEGIN
UPDATE info
SET borrower = '****'
' at line 5
Ich weiß, es ist etwas sehr klein sein muss, aber ich sind für eine Weile stecken geblieben und scheinen meinen Fehler nicht zu finden.
'begin/end' ist in gespeicherten Prozeduren nur gültig, nicht in einer allgemeinen' select' Abfrage. was du versuchst zu tun, ist in einem 'select' nicht möglich. select zieht nur Daten aus einer Tabelle heraus. Es kann den Inhalt einer Tabelle oder einer anderen Tabelle nicht ändern. Sie würden 'update ... join' brauchen, und selbst dann kann das nur auf bestimmte Felder zielen, nicht auf arbritary, die aus einem select gezogen wurden. –
Wo also sollte ich meinen 'UPDATE ...' Abschnitt einfügen? – Jodo1992
Was machst du da? Das Datenbankschema abfragen und in eine Tabelle übernehmen - das sieht schrecklich aus –