Problem mit DB-Kommando
Kalle_
- php
Hallöle,
habe hier zwei MySql- Kommandos:
UPDATE bfp_kontakte SET prio_1=0, prio_2=0 WHERE owner=2 AND besucher_id=1303 AND slot_nr=0 AND sperr_kz=0;
INSERT INTO bfp_kontakte (
owner
, besucher_id
, kon_kz
, aussteller_id
, prio_1
) VALUES (
2
,1303
, 1
,862
,1
);
Wenn ich die genauso in phpMyAdmin eingebe, kommt die Meldung: "Ihr SQL-Befehl wurde erfolgreich ausgeführt."
Dieselben beiden Kommandos mit
$q = "....";
$res = mysql_query( $q ); zeigSqlFehler( $act, $q );
bringt den Fehler
"1064: Fehler in der Syntax bei '; INSERT INTO bfp_kontakte ( owner , besucher_id , kon_kz , a' in Zeile 2."
Also der Update gefällt nicht. Ich vermute, er mag das Semikolon nicht. Warum geht es dann aber in phpMyAdmin ?
LG Kalle
ich vergaß zu erwähnen, warum ich mehrere Kommandos übergeben will: Um die Verbindungen von PHP zur DB gering zu halten.
echo $begrüßung;
ich vergaß zu erwähnen, warum ich mehrere Kommandos übergeben will: Um die Verbindungen von PHP zur DB gering zu halten.
Man kann durchaus mehrere Befehle (mysql_query) nacheinander über die gleiche Verbindung (mysql_connect) senden.
echo "$verabschiedung $name";
Hello,
ich vergaß zu erwähnen, warum ich mehrere Kommandos übergeben will: Um die Verbindungen von PHP zur DB gering zu halten.
Man kann durchaus mehrere Befehle (mysql_query) nacheinander über die gleiche Verbindung (mysql_connect) senden.
siehe z.B. http://forum.de.selfhtml.org/archiv/2005/1/t99694/#m609374
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
siehe z.B. http://forum.de.selfhtml.org/archiv/2005/1/t99694/#m609374
und http://de3.php.net/mysqli-multi-query
Was ist daraus geworden? Hat das schon mal jemand erfolgreich benutzt?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Ich vermute, er mag das Semikolon nicht.
richtig, die schnittstelle php <-> mysql über die mysql-funktionen schließt dies aus.
warum? elementares sicherheitsdenken.
eine vielzahl von sql-injcetions basiert darauf, bei nicht ausreichend abgesichtern usereingaben einfach eine zweite query mit ; abgetrennt am die eigentlich vom programmierer beabsichtigte anzuhängen - das könnte dann bspw. ein DELETE FROM tabelle sein.
Warum geht es dann aber in phpMyAdmin ?
weil PMA die eingegebene query am seimikolon aufteilt, und dann mehrere separate einzelstatements an die DB absetzt.
gruß,
wahsaga
Warum geht es dann aber in phpMyAdmin ?
weil PMA die eingegebene query am seimikolon aufteilt, und dann mehrere separate einzelstatements an die DB absetzt.
... für die Aufklärung.
Kalle