Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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:

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

"...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 ...

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

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.