Woodstock Geschrieben 25. Januar 2012 Geschrieben 25. Januar 2012 Hallo, war ne lange Zeit nicht da, aber nun habe ich heute ein Problem und finde meinen Fehler einfach nicht. Ich habe eine MySQL Datenbank, in der unter anderem folgende Tabelle mit folgenden Daten enthalten ist:CREATE TABLE IF NOT EXISTS `verkaeufer` ( `id` int(3) NOT NULL auto_increment, `name` varchar(25) NOT NULL, `vorname` varchar(25) NOT NULL, `strasse` varchar(50) NOT NULL, `hausnummer` varchar(5) NOT NULL, `plz` int(5) NOT NULL, `ort` varchar(25) NOT NULL, `vorwahl` varchar(25) NOT NULL, `tel` varchar(25) NOT NULL, `abholer` varchar(25) default '', `markenset1` int(5) NOT NULL, `markenset2` int(5) default NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; -- -- Daten für Tabelle `verkaeufer` -- INSERT INTO `verkaeufer` (`id`, `name`, `vorname`, `strasse`, `hausnummer`, `plz`, `ort`, `vorwahl`, `tel`, `abholer`, `markenset1`, `markenset2`) VALUES (1, 'Nachname', 'Vorname', 'Strasse', '1', 11111, 'Stadt', '01234', '123456', '', 1, 2);[/PHP] Nun will ich den Datensatz ändern. Dazu muss der Benutzer den Vornamen & Nachname und die Vorwahl & Telefonnummer in ein Formular eingeben. Mit diesen Daten soll dann der Datensatz geholt werden, und alle Daten sollen in ein Formular ausgegeben werden. Das klappt auch wunderbar, wenn man die Eingaben richtig sind. Nun habe ich aber heute extra, um Fehler abzufangen, falsche Daten eingegeben, und bekommt bei der MySQL Abfrage: [PHP] $sql1 = "SELECT * FROM verkaeufer WHERE name='$name' AND vorname='$vorname' AND vorwahl='$vorwahl' AND tel='$tel'"; $result1 = mysql_query ($sql1);Resource id #3 zurück, egal was ich in die Felder vorher eingegeben hatte (nicht korrekte Daten). WIESO???? Eigentlich müsste ich doch false zurückbekommen, da die Bedingungen doch nicht erfüllt sind. Ist übrigens, wenn ich das direkt in phpMyAdmin machen auch der Fall. Wer kann mir helfen?!?! LG Sabine Zitieren
etreu Geschrieben 25. Januar 2012 Geschrieben 25. Januar 2012 Return Values For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error. Auch eine leeres Resultset ist eine erfolgreiche Antwort. Den Satz mit phpmyadmin verstehe ich nicht so ganz Zitieren
Woodstock Geschrieben 25. Januar 2012 Autor Geschrieben 25. Januar 2012 Also wenn ich das select Statement in PHP zusammengebaut habe (nach der Auswertung der Formulardaten), sieht das so aus:SELECT id FROM verkaeufer WHERE name='Nachname' AND vorname='Vorname' AND vorwahl='01234' AND tel='123' [/PHP]Wenn ich das nun direkt über phpMyAdmin ausführe, dann sagt der mir dass es keinen passenden Datensatz gibt --> so soll es sein. Warum also bekomme ich nun wenn ich das Statement per PHP auf dem Webserver ausführe Resource id#3 zurück und nicht false? Und wenn das so korrekt ist, wie kann ich dann erfahren dass es den Datensatz nicht gibt? LG Sabine Zitieren
diditwithook Geschrieben 25. Januar 2012 Geschrieben 25. Januar 2012 "...For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. ..." PHP: mysql_query - Manual Checke den Datensatz noch auf plausibilität, vorhandener PK ... Zitieren
Woodstock Geschrieben 25. Januar 2012 Autor Geschrieben 25. Januar 2012 Ja, das habe ich jetzt dann gemacht, finde ich aber irgendwie unschön. Also es gibt KEINE genaue Angabe ob es für den Select auch einen Datensatz gibt, sondern nur ob das Query ausgeführt werden konnte? LG Sabine Zitieren
rny Geschrieben 25. Januar 2012 Geschrieben 25. Januar 2012 Ist schon etwas her und gerade keine Möglichkeit zum testen, aber sollte man damit nicht sehen obs einen Rückgabewert gibt oder nicht? if(!mysql_db_rows($result1)){ echo "kein Eintrag"; } Zitieren
flashpixx Geschrieben 25. Januar 2012 Geschrieben 25. Januar 2012 Ich würde, wenn Du nicht alles per Hand codieren willst und etwas mehr Usability haben willst zu PHP: PDO - Manual oder ADOdb Database Abstraction Library for PHP (and Python) for MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Firebird, Interbase, LDAP, Access, VFP, DB2 and many other databases greifen Zitieren
AsoraX Geschrieben 3. Februar 2012 Geschrieben 3. Februar 2012 Du könntest da auch zusäzlich eine COUNT(*) abfrage einbauen.... $count = "SELECT COUNT(*) FROM verkaeufer WHERE name='$name' AND vorname='$vorname' AND vorwahl='$vorwahl' AND tel='$tel'"; IF($count == 1){ $sql1 = "SELECT * FROM verkaeufer WHERE name='$name' AND vorname='$vorname' AND vorwahl='$vorwahl' AND tel='$tel'"; $result1 = mysql_query ($sql1); }else{ echo "kein Eintrag"; } [/PHP] So inetwa sollte das funktionieren können Zusätzlich könntest du jetzt auch eine weitere if schleife einbauen um dir evtl doppelte Datensätze anzeigen zu lassen... [PHP] if($count >= 2) { echo "Die Suche ergab mehrere Treffer"; [HIER DANN IRGENTWAS] } Meiner meinung nach die beste lösung Ist zwar etwas mehr Code, aber Variabler einsetzbar, und vorallem sicherer was die Ausgabe betrifft. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.