![]() |
Datenbank: MYSQL • Zugriff über: libmysql.dll mysql.pas
Problem mit SQL abfrage
Hi
ich bin gerade an einer SQL abfrage in Delphi 2005 PE mit der libmysql.dll und mysql.pas. Allerdings bekomme ich ständig eine fehlermeldung das etwas mit der Abfrage nicht stimmt ich hab eine vergleichbare abfrage bereits in PHP geschrieben und dort funzt sie ohne Probleme. Alos hier mal der entsprechende Delphi code.
Delphi-Quellcode:
und hier nun das vergleichbare PHP element
var
_myRes: PMySQL_Res; _myRow: PMySQL_Row; mengeneu: integer; begin query:=PChar('SELECT * FROM warenkorb WHERE userid ="'+inttostr(Form3.userid)+'" AND artikelnr ="'+edit1.Text+'"'); mysql_real_query(_myCon, query, Length(query)); _myRes := mysql_store_result(_myCon); _myRow := mysql_fetch_row(_myRes); {$Region 'if _myRow[2] > 0'} if strtoint(_myRow[2]) > 0 then begin mengeneu:= strtoint(_myRow[2])+strtoint(edit4.Text); query:=PChar('UPDATE warenkorb SET menge ="'+inttostr(mengeneu)+'" WHERE userid ="'+inttostr(Form3.userid)+'" AND artikelnr ="'+edit1.Text+'"'); mysql_real_query(_myCon, query, Length(query)); end
Code:
$abfrageadd = "SELECT * FROM warenkorb WHERE userid = '$user' && artikelnr = '$_POST[artikelnr]'";
$ergebnisadd = mysql_query($abfrageadd); while($prodadd = mysql_fetch_object($ergebnisadd)){ $mengeold=$prodadd->menge;} if($mengeold>0){ $mengenew=$mengeold+$_POST['menge']; $aendern1 = "UPDATE warenkorb Set menge = '$mengenew' WHERE userid = '$user' && artikelnr = '$_POST[artikelnr]'"; $update1 = mysql_query($aendern1);} Bei der Abfrage besteht die möglichkeit, dass durch die einscränkung mit WHERE nach Datensätzen gesucht wird die nicht existen sind. Doch mit PHP mach dies ja keine Problem und ich dacht das es auch in Delphi dann kein Problem sein dürfte. Ich hoffe ihr könnt mir folgen und helfen MfG BastardOp |
Re: Problem mit SQL abfrage
ersetze mal die Anführungszeichen >"< durch das doppelte apostroph >''< also 2 mal das >'<
|
Re: Problem mit SQL abfrage
hab ich gemacht aber das bringt auch nichts
|
Re: Problem mit SQL abfrage
Schreib doch bitte mal, welche Fehlermeldung Du bekommst, ansonsten müssen wir im Kaffeesatz lesen, und das ist gar nicht so einfach.
BTW: Ich würde auch dringend SQL-Statements mit Parametern empfehlen! |
Re: Problem mit SQL abfrage
die Fehler meldung is eine Exeption der Klasse EAccessVioliation "Zugrifssverletzung bei Adresse 00474500 im Modul user.exe!
die user.exe is die ausgeführt datei. Wie meinst du das mit den SQL-Statments mit Parametern? |
Re: Problem mit SQL abfrage
Das klingt aber nicht nach nach einem Fehler im SQL sondern eher nach einer nicht erzeugten Objektinstanz. Kann es sein, daß Du Query oder mysql_real_query erst mal erzeugen mußt?
|
Re: Problem mit SQL abfrage
also habs nu bissel weiter geschaut und überlegt uns so und bin drauf gekommen das der fehlen bei der if Anweisung liegt. Undzwar weil auf Grund des nichtvorhandnene Datensatzes nichts in _myRow[2] geschreiben wird gibts da nen fehler. Also rauchte ich nu nur noch Ne Funktion die überprüft ob _myRow überhaupt gesetzt wurde, das würde vollkommen ausreichen.
|
Re: Problem mit SQL abfrage
Hallo,
Zitat:
Kannst Du nicht einfach _myRes abfragen und schauen ob es > 0 ist, wenn ja dann soll die Procedure weiterlaufen und wenn nicht EXIT. Wenn das nicht so einfach ist, dann mache einfach 2 Select's und im ersten schaust Du einfach nur nach ob überhaupt ein DS dazu vorhanden ist (Count ist wäre da dein Freund). Oder Du steckst das ganze in einen Try Except Block, obwohl das nicht gerade eine sehr elegante Lösung für das Problem wäre. Aber du bist somit die Fehlermeldung los. :-D |
Re: Problem mit SQL abfrage
so hab nu im irc gefragt und es geht nu mit if assigne(_myRow) then... hat es gefunzt also Problem gelöst
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz