2016-05-15 2 views
-1

Datenbankabfrage ist aufgrund eines Syntaxfehlers unten fehlgeschlagen. Kann jemand den Fehler sehen? Ich würde es begrüßen. Danke, ChrisSQL-Syntax mit PHP Join

$sql = "INSERT INTO ".self::$table_name." ("; 
$sql .= join(", ", array_keys($attributes)); 
$sql .= ") VALUES ('"; 
$sql .= join("', '", array_values($attributes)); 
$sql .= "')"; 
+0

Was enthält die Variable $ sql, nachdem Sie das ausgeführt haben? Auch was ist die genaue Fehlermeldung, die Sie bekommen? – Hogan

+0

Suchen Sie nach ['INSERT ... SELECT'] (http://dev.mysql.com/doc/refman/5.7/en/insert-select.html)? – Chay22

+0

Die Abfrage sieht gut aus. Welchen Fehler bekommst du? –

Antwort

0

Ihr vorheriger Code zu einer SQL-Anweisung auswerten würde ähnlich wie:

$sql = "INSERT INTO tableName (1,2,3,4) VALUES ('a','b','c','d')"; 

Die Zeichenfolge sollten nicht fehlschlagen, wenn die Schlüssel in $attribute tatsächlich die Spalten in der Datenbank sind, und wenn die Datentypen der Werte in $attribute im erforderlichen Format ihrer jeweiligen Spalten sind.

Da die SQL-Abfrage fehlgeschlagen ist, ist wahrscheinlich eine der beiden vorherigen Bedingungen falsch. Sie sollten versuchen, die Ausführung der Abfrage zu kommentieren und vorübergehend den Code echo $sql zu verwenden, damit Sie feststellen können, welcher Teil des Codes den Fehler verursacht.

+0

Es ist wahrscheinlich eines von zwei Problemen - eines der Felder ist keine Zeichenfolge oder die $ -Attribute enthalten einen generierten Schlüssel. (zB "ID") – Hogan

+0

@Hogan yeah wahrscheinlich, und es ist super einfach herauszufinden, indem man '$ sql' auf den Bildschirm ausdruckt :), obwohl es scheint, dass er alles über seine Stackoverflow-Frage vergessen hat :( – Webeng

+0

Nicht vergessen Es ist Schlafzeit, in der ich lebe. Ich werde es abholen, wenn ich aufwache. Danke so weit ... –

0

Danke an alle, die sich die Zeit genommen haben, darüber nachzudenken. Und allen, die vorgeschlagen haben, die $ sql-Variable zu untersuchen, um herauszufinden, was meine Syntaxfehler waren, hat das funktioniert.

Ich bin dankbar, jetzt kann ich weitermachen. Danke, Chris