AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL & PHP-Problem

Ein Thema von ecHo89 · begonnen am 21. Nov 2009 · letzter Beitrag vom 23. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#1

MySQL & PHP-Problem

  Alt 21. Nov 2009, 11:40
Datenbank: MySQL von bplaced.net • Zugriff über: Delphi
Hallo,

ich habe ein kleines PHP-Problem. Folgender Sachverhalt:
Ich hole schicke per
Delphi-Quellcode:
SendPostData(Ahttp: TIdHTTP; const AtoURL: string;
  const aParams: TStrings): string;
meine Daten an das PHP-Formular. Das funktioniert beim Eintragen wunderbar. Aber wie bekomm ich jetzt am geschicktesten das Ergebnis dann wieder zurück in meine App? Habs mir überlegt mit speichern in einer Datei und die dann per Delphi öffnen. Gibts einen besseren Weg?
Und außerdem soll das 2. SQL-Statement falsch sein. Beim Vergleich ID(aus meiner App) und Schluessel aus der Tabelle gibt es einen Fehler bzw. es funktioniert nicht wie gewollt.

Delphi-Quellcode:
$ID = strip_tags($_POST['Schluessel']);
$r_ergebnis = mysql_query("SELECT Schluessel,AnzahlReg,Seriennummer FROM Table WHERE [b]Schluessel='$ID'"[/b]);
Vielen Dank schonma im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: MySQL & PHP-Problem

  Alt 21. Nov 2009, 11:45
Zitat von ecHo89:
Aber wie bekomm ich jetzt am geschicktesten das Ergebnis dann wieder zurück in meine App? Habs mir überlegt mit speichern in einer Datei und die dann per Delphi öffnen. Gibts einen besseren Weg?
Joa ... einfach die Antwort vom PHP-Skript ausgeben lassen - das Internet ist ja schlißlich keine Einbahnstraße

Zitat:
Und außerdem soll das 2. SQL-Statement falsch sein. Beim Vergleich ID(aus meiner App) und Schluessel aus der Tabelle gibt es einen Fehler bzw. es funktioniert nicht wie gewollt.
Welcher Fehler kommt denn?

Und bevor du jetzt schreibst
Zitat:
$var is not a vlaid sql-resource
lasse dir mal das Ergebnis von mysql_error() ausgeben
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#3

Re: MySQL & PHP-Problem

  Alt 21. Nov 2009, 13:43
Funktioniert jetzt, danke, war wohl gestern bisschen spät
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#4

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 00:47
SQL-Code:
$sql = mysql_query("SELECT AnzahlReg FROM Table WHERE Seriennummer='$Seriennummer'");
$val = mysql_fetch_assoc($sql);
$val++;
mysql_query("UPDATE " . $tablename . " SET AnzahlReg= " . $val[AnzahlReg] . " WHERE Seriennummer='" . $Seriennummer . "'"); oder
mysql_query("UPDATE " . $tablename . " SET AnzahlReg= " . $val['AnzahlReg'] . " WHERE Seriennummer='" . $Seriennummer . "'"); oder
mysql_query("UPDATE " . $tablename . " SET AnzahlReg= " . $val . " WHERE Seriennummer='" . $Seriennummer . "'"); oder
mysql_query("UPDATE " . $tablename . " SET AnzahlReg=$val WHERE Seriennummer='" . $Seriennummer . "'");
...
Was zum Teufel mache ich falsch? Beim 2. Beispiel (siehe Unten) funktioniert alles. Einziger unterschied Schluessel ist varchar und AnzahlReg integer. Es soll einfach das Feld um 1 hochgezählt werden.


mysql_query("UPDATE " . $tabname . " SET Schluessel = '" . $Schluessel . "' WHERE Seriennummer = '" . $Seriennummer ."'");
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 02:45
Im ersten UPDATE-Statement fehlen die Anführungszeichen im Array-Index. Leider lässt PHP das trotzdem zu, aber es ist falsch. Im zweiten ist alles richtig. Im dritten fehlt der Index für das Array, d.h. welches Feld du aus dem vorherigen Select denn benutzen willst. Im vierten und letzten Statement ist der gleiche Fehler wie im dritten, nur dass du hier auf den String-Verknüpfungsoperator verzichtet hast.

Dennoch kleiner Tipp am Rande, falls du deine Seite noch etwas optimieren willst:

UPDATE my_table SET AnzahlReg = AnzahlReg + 1 WHERE Seriennummer = '123' Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 02:50
Zitat von ecHo89:
Was zum Teufel mache ich falsch?
Man könnte sich auch mal die Abfragen ausgeben lassen, um zu sehen, was man sich da zusammenbastelt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#7

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 15:26
SQL-Code:
$sql = mysql_query("SELECT AnzahlReg FROM Table WHERE Seriennummer='$Seriennummer'");
$val = mysql_fetch_assoc($sql);

die($val['AnzahlReg']);
Das funktioniert.


SQL-Code:
$sql = mysql_query("SELECT Key FROM Table2 WHERE Key='$Seriennummer'");
$val = mysql_fetch_assoc($sql);

die($val['Key']);
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /users/echo/www/ValidateKey.php on line 11

</span>

Ich weiß echt nicht wo da der Fehler liegen sollte... Table2-> NR: int, Key: varchar(8)

Gibts eig. ne bessere Möglichkeit zuschaun ob ein Wert in einer Tabelle existiert, z.b. IN oder ähnliches?

SendPostData(Ahttp: TIdHTTP; const AtoURL: string;
const aParams: TStrings): string;
Gibt mir per die(); die Antwort aus dem PHP-Skript. Andere Möglichkeit gibts in dem Sachverhalt nicht?

Edit: Key sieht mir wie n reserviertes Wort aus. Aber mit ner Alternativefunktionierts auch nicht (ja hab auch an die Struktur der Tabelle gedacht)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 15:35
Ja, es gibt eine Möglichkeit: mysql_num_rows() gibt dir die Anzahl der Zeilen zurück, die im Ergebnis enthalten sind.

Desweiteren ist eigentlich echo die bevorzugte Ausgabemethode, die() ist eher für Fehlermeldungen (Fehlermeldung ausgeben und sofort beenden)

Also z.B.
Code:
$sql = mysql_query('SELECT Key FROM Table2 WHERE Key="' . $_POST['Seriennummer'] . '"');
if(mysql_num_rows($sql) == 1)
{
$val = mysql_fetch_assoc($sql);
echo $val['Key'];
}
else
{
  die('Fehler: ' . mysql_error())
}
P.S.: Hast du eigentlich register_globals eingeschaltet?
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#9

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 16:55
register_globals ist mir unbekannt.
kann man mit echo auch Daten an Delphi zurückgeben? Dachte das funktioniert nur bei direkten Aufruf im Browser?

Aufruf aus Delphi: SendPostData(Ahttp: TIdHTTP; const AtoURL: string;
const aParams: TStrings): string;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: MySQL & PHP-Problem

  Alt 22. Nov 2009, 16:57
Zitat von ecHo89:
kann man mit echo auch Daten an Delphi zurückgeben? Dachte das funktioniert nur bei direkten Aufruf im Browser?
Ich vermute, du nutzt "IdHTTP.Post()". Der Rückgabewert ist das, was auch der Browser auswertet (echo-Ausgaben, HTML-Code, den du ausgibst etc).

Str := IdHTTP.Post(Url);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz