AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit SQL abfrage

Problem mit SQL abfrage

Ein Thema von BastardOp · begonnen am 1. Jul 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
BastardOp

Registriert seit: 5. Jun 2005
71 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit SQL abfrage

  Alt 1. Jul 2005, 17:25
Datenbank: MYSQL • Zugriff über: libmysql.dll mysql.pas
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:
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
und hier nun das vergleichbare PHP element

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
Alle Menschen sind Ausländer FAST ÜBERALL!!!
Alle Rassisten sind ARSCHLÖCHER ÜBERALL!!!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 17:50
ersetze mal die Anführungszeichen >"< durch das doppelte apostroph >''< also 2 mal das >'<
  Mit Zitat antworten Zitat
BastardOp

Registriert seit: 5. Jun 2005
71 Beiträge
 
Delphi 7 Personal
 
#3

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 18:01
hab ich gemacht aber das bringt auch nichts
Alle Menschen sind Ausländer FAST ÜBERALL!!!
Alle Rassisten sind ARSCHLÖCHER ÜBERALL!!!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 18:06
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!
  Mit Zitat antworten Zitat
BastardOp

Registriert seit: 5. Jun 2005
71 Beiträge
 
Delphi 7 Personal
 
#5

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 19:07
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?
Alle Menschen sind Ausländer FAST ÜBERALL!!!
Alle Rassisten sind ARSCHLÖCHER ÜBERALL!!!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 20:02
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?
  Mit Zitat antworten Zitat
BastardOp

Registriert seit: 5. Jun 2005
71 Beiträge
 
Delphi 7 Personal
 
#7

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 20:07
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.
Alle Menschen sind Ausländer FAST ÜBERALL!!!
Alle Rassisten sind ARSCHLÖCHER ÜBERALL!!!
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#8

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 20:40
Hallo,

Zitat:
_myRow := mysql_fetch_row(_myRes);
Es geht doch um die diese Stelle hier wo der Fehler auftritt, oder?

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.
Gruß

Albi
  Mit Zitat antworten Zitat
BastardOp

Registriert seit: 5. Jun 2005
71 Beiträge
 
Delphi 7 Personal
 
#9

Re: Problem mit SQL abfrage

  Alt 1. Jul 2005, 21:09
so hab nu im irc gefragt und es geht nu mit if assigne(_myRow) then... hat es gefunzt also Problem gelöst
Alle Menschen sind Ausländer FAST ÜBERALL!!!
Alle Rassisten sind ARSCHLÖCHER ÜBERALL!!!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf