Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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 :rolleyes:

Geschrieben

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

Geschrieben

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

Geschrieben

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"; }

  • 2 Wochen später...
Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...