Hallo,
mit mysqli_affected_rows ($obj->affected_rows) oder mysqli_num_rows ($obj->num_rows). Zu beachten hier ist lediglich, dass es sich um Eigenschaften und nicht um Methoden handelt.
Hallo,
erstmal muss ich loswerden, dies ein super Tutorial ist! Doch leider versteh ich nicht wie ich bei diesere Methode "Datensätze auslesen (Prepare Methode)"
die Anzahl der gefunden Beiträge ausgeben kann bzw. überprüfen kann ob ein Eintrag vorhanden ist.
Würde mich freuen wenn mir jemand weiter helfen kann.
Gruß Andy
Hallo,
mit mysqli_affected_rows ($obj->affected_rows) oder mysqli_num_rows ($obj->num_rows). Zu beachten hier ist lediglich, dass es sich um Eigenschaften und nicht um Methoden handelt.
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Normal müsste das Ergebnis 1 sein und nicht 0 oder -1.PHP-Code:$id = 1;
$getUser = 'SELECT `user_id`, `username`, `user_email`, `user_temp_pass`, `user_random_key` FROM `ak_users` WHERE `user_id` = '. $id .';';
$ergebnis = $db->prepare($getUser);
$ergebnis->execute();
$ergebnis->bind_result( $user_id, $username, $user_email, $user_temp_pass, $user_random_key);
$ergebnis->fetch();
echo $username;
echo "<br>";
echo $ergebnis->num_rows; /* Ergebnis 0*/
echo "<br>";
echo $ergebnis->affected_rows; /* Ergebnis -1*/
Was ist daran falsch?
Hallo,
so kann das ja auch nicht funktionieren. Stell dir das mal so vor:
Du sendest eine Anfrage (Bestellung) an die DB, dass Du diese und jene Datensätze gerne für deine Applikation verwenden möchtest (prepare mit Übermittlung des Statement). Anschließend schickst Du die Auftragsbestätigung hinterher (execute). MySQL sucht jetzt die Datensätze (Artikel) heraus, macht daraus ein hübsches großes Paket in dem viele kleine Artikel deiner Bestllung sind und legt es auf die Seite und wartet, bis es abgeholt wird (fetch). Damit es da kein Durcheinander gibt, bekommst Du jeden Artikel einzeln übergeben (while(fetch) - ab PHP 5.3 kannst Du auch das ganze Paket abholen mit fetch_all). Du weißt aber noch gar nicht, wie viele Artikel tatsächlich gefunden wurden und wie oft Du zur DB musst um den nächsten Artikel abzoholen. Das erfährt man für gewöhnlich vom Lieferschein, auf dem sämtliche Details der Bestellung stehen und welche Artikel tatsächlich lieferbar sind - und genau der fehlt offensichtlich bei dir. Um den Lieferschein anzufordern, benutzt man bei den Prepared Statements ein $ergebnis->store_result(). Das store_result übergibt an PHP Informationen über den letzten Datentransfer (gesamte Bestellung inklusive lieferbare Artikel (num_rows/affected_rows)).
Aus dieser kleinen, kitschigen Story ergibt sich also folgende Vorgehensweise:
Bestellung aufgeben -> Bestellung bestätigen -> Lieferschein prüfen -> Ware mitnehmen
Kleiner Nachtrag
Wenn Du schon Prepared Statements verwendest, was man tun sollte, weil es gut ist, dann solltest Du das auch konsequent machen. Soll heißen, dass man dann im Statement nicht direkt Daten einfügt, weil dass das Vorbereiten des Statement zunichte macht. Besser so …
PHP-Code:$getUser = 'SELECT `user_id`, `username`, `user_email`, `user_temp_pass`, `user_random_key` FROM `ak_users` WHERE `user_id` = ?';
$ergebnis = $db->prepare( $getUser );
$ergebnis->bind_param( 'i', $id );
$ergebnis->execute();
Geändert von phpBuddy (17.07.2010 um 23:11 Uhr)
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Also so und das Ergebniss stimmt auch.PHP-Code:$id = 1;
$getUser = 'SELECT `user_id`, `username`, `user_email`, `user_temp_pass`, `user_random_key` FROM `ak_users` WHERE `user_id` = ?';
$ergebnis = $db->prepare( $getUser );
$ergebnis->bind_param( 'i', $id );
$ergebnis->execute();
$ergebnis->bind_result( $user_id, $username, $user_email, $user_temp_pass, $user_random_key);
$ergebnis->store_result();
if($ergebnis->num_rows == 1) {
$ergebnis->fetch();
echo $username;
}
Geändert von kcyberbob (17.07.2010 um 23:14 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)