Moin!
Kennt zufällig jemand in PHP eine Möglichkeit bzw. ein Script oder was auch immer... um einen String, bevor dieser als Query ausgeführt wird, auf richtige SQL-Syntax zu prüfen?
Danke und Gruß,
Markus
Moin!
Kennt zufällig jemand in PHP eine Möglichkeit bzw. ein Script oder was auch immer... um einen String, bevor dieser als Query ausgeführt wird, auf richtige SQL-Syntax zu prüfen?
Danke und Gruß,
Markus
Ich nehme mal an, dass er nicht mysql_real_escape_string meint.
mysql_error() hilft auch nicht wenn er vor dem abschicken kontrollieren möchte.
Ein Script dafür weiß ich leider nicht. Ich wäre aber neugierig wozu du sowas brauchst.
Lässt du SQL-Befehle durch User zu?
Nein ich schreibe gerade ein PHP-Script das über Commandline ausgeführt wird. Als Parameter soll unter anderem eine Datei mit SQL-Statements angegeben werden welche PHP einliest und ausführt.
Es geht um automatische Datenbank aktualisierung mehrerer Datenbanken.
Auf unseren Servern (ca. 40) sind jeweils etwa 100 Instanzen eines CMS von dem jedes einzelne natürlich eine eigene Datenbank nutzt. Natürlich könnte ich das ganze dann wahrscheinlich einfacher über ein Shell-Script lösen aber aus verschiedenen Gründen wollte/sollte ich das ganze über PHP lösen.
Ist auch nicht so unglaublich wichtig (das Syntax prüfen), da das Script ja eh nur Firmenintern verwendet.
Lässt du SQL-Befehle durch User zu?
Wer macht denn sowas?
Das klingt nach einer interessanten Aufgabe. Ich wünsche dir viel Spass und Erfolg damit.
Ist schon fertig... (ohne Syntaxcheck :>)
Aber trotzdem.... wenn jemand sowas findet... nur her damit... kann nicht schaden :>
Ist zwar schon etwas älter, bin aber grad hier gelandet, da ich ein ähnliches Problem habe.
Da es scheinbar von MySQL keine Möglichkeit gibt einen Syntax-Check VOR der Ausführung zu machen, nutze ich nun folgendes:
- bei lesenden Befehlen (SELECT) verwende ich EXPLAIN (also EXPLAIN SELECT ...)
- bei schreibenden Befehlen verwende ich BEGIN / ROLLBACK
Letzteres geht natürlich nur bei Tabellentypen die Transaktionen unterstützten - also z.b. bei InnoDB - nicht aber bei MyISAM.
Das checkt nicht nur die allgemeine SQL-SYNTAX sondern ebenfalls auch die Namensgebung. Ein "SELECT * FROM Artikeel" würde also auch fehlschlagen, obwohl die Syntax an sich korrekt ist.
Hoffe das hilft mal irgendwem
Gruß
Plasm