php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.06.2009, 13:07  
Neuer Benutzer
 
Registriert seit: 04.06.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
ThomasM befindet sich auf einem aufstrebenden Ast
ThomasM eine Nachricht über ICQ schicken
Standard [Erledigt] Spalten in Datenbank zählen mit mysql_num_rows?

Hallo,

habe gerade ein kleines Problem mit einem Tutorial für ein Login Script.

Hier ist der Code:
PHP-Code:
$passwort1 md5($passwort1);

$sql "SELECT
          id
        FROM
          login
        WHERE
          username 
        LIKE
          $username"
;

$result $db->query($sql);
$menge mysql_num_rows($result);

if (
$menge == 0) {
  
$sql "INSERT INTO
            login (username, password)
          VALUES
            ('$username', '$passwort1')"
;
  
$eintragen $db->query($sql);
  
  if (
$eintragen == true) {
  echo 
'Du wurdest erfolgreich registriert. Dein Benutzername lautet: '.$username.'. <a href="login.htm">Zurück</a>';
  } else {
  echo 
'Fehler beim Speichern des Benutzernamens. <a href="eintragen.htm">Zurück</a>'
  }
} else
    {
    echo 
'Benutzername schon vorhanden. <a href="eintragen.html">Zurück</a>';
    } 
Ich kann die Daten Username und Passwort damit erfolgreich in die Datenbank eintragen, allerdings erhalte ich dabei folgende Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\lernen\logineinfach\eintragen.php

Wenn ich mich dann mit dem erstellten Username einloggen möchte, wird folgendes Script aufgerufen:
PHP-Code:
$sql "SELECT 
          username, password
        FROM 
          login
        WHERE 
          username
        LIKE
          $username
        LIMIT 1"
;

$result $db->query($sql);

$row mysql_fetch_object($result);

if (
$row->password == $passwort) {
  
$_SESSION['username'] = $username;
  echo 
"Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
    } else {
      echo 
"Benutzername und/oder Passwort waren falsch. <a href=\"login.htm\">Login</a>";
      } 
Hier erhalte ich dann folgende Fehlermeldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\lernen\logineinfach\login.php

Was hat das zu bedeuten? Ich habe schon mysql_fetch_array ausprobiert, mit dem gleichen Ergebnis.

Geändert von ThomasM (15.06.2009 um 13:43 Uhr).
ThomasM ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.06.2009, 13:10  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Schau dir mal das db object an, was da passiert. Ich denk mal, dass da der query fehlschlägt. Zeigt er dir was von wegen uncaught exception?
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline  
Alt 15.06.2009, 13:26  
Neuer Benutzer
 
Registriert seit: 04.06.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
ThomasM befindet sich auf einem aufstrebenden Ast
ThomasM eine Nachricht über ICQ schicken
Standard

Hmm, also ich habs mir var_dump versucht und folgende Ergebnisse erhalten:

var_dump ($sql);
string(121) "SELECT id FROM login WHERE username LIKE ThomasM"

var_dump ($result);
bool(false)

PHP-Code:
$menge mysql_num_rows($result); 
var_dump ($menge);
bool(false)

Eigentlich sollte er bereits Benutzernamen in der Datenbank finden und ich verstehe nicht so ganz, warum $menge false zurückgibt?

"uncaught exception" ist bisher nicht aufgetaucht.
ThomasM ist offline  
Alt 15.06.2009, 13:33  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Beim username hat like nichts zu suchen. Wenn er schon unique ist, ersetz es durch ein = und benutz singlequotes.
Probier mal den query in phpmyadmin:
Code:
SELECT id FROM login WHERE username='ThomasM'
__edit:

Entfern doch bitte noch das "Problem - "aus dem threadtitel. Und wenn dein db Object nicht mal eine exception wirft, wenn der query fehlschlägt, würde ich auf bessere fertige Klasse setzen.
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline  
Alt 15.06.2009, 13:48  
Neuer Benutzer
 
Registriert seit: 04.06.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
ThomasM befindet sich auf einem aufstrebenden Ast
ThomasM eine Nachricht über ICQ schicken
Standard

Habe den Code nun entsprechend verändert:

PHP-Code:
$sql "SELECT
          id
        FROM
          login
        WHERE
          username = '$username'"
;

$result $db->query($sql);

$menge mysql_num_rows($result); 
Das Problem bleibt leider bestehen, erhalte nach wie vor die Meldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\lernen\logineinfach\eintragen.php

Wenn ich den Query direkt in phpmyadmin ausführe, erhalte ich die entsprechende ID zurück.

Was bedeutet das denn mit der exception? Meine Klasse sieht so aus:

PHP-Code:
$db = new mysqli('localhost''root''pass''test');
    if (!
$db) {
      echo 
'Verbindungsfehler: '.mysqli_connect_error();
      die(); 
    } 
Ist halt ganz einfach gehalten, fange auch gerade erst mit PHP an.
ThomasM ist offline  
Alt 15.06.2009, 14:53  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Wie sieht denn deine query methode aus? Haste da den resource identifier angegeben?
Ersetz mal $menge durch
PHP-Code:
$menge=$db->affected_rows
Wird schon, dafür siehts doch schon echt gut aus
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline  
Alt 15.06.2009, 15:04  
Neuer Benutzer
 
Registriert seit: 04.06.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
ThomasM befindet sich auf einem aufstrebenden Ast
ThomasM eine Nachricht über ICQ schicken
Standard

Habe es ersetzt, nun erfolgt auch keine Fehlermeldung mehr. Nur die Meldung, dass der Name jetzt registriert ist. Ich verstehe den Unterschied zwar nicht ganz, bin soweit aber erstmal zufrieden. Danke.

Das mit der Query Methode verstehe ich ebenfalls nicht. Was ist mit Resource Identifier gemeint? Der Code ist folgender:

PHP-Code:
$sql "SELECT
          id
        FROM
          login
        WHERE
          username = '$username'"
;

$result $db->query($sql); 
Denke daraus ist der Query ersichtlich und auch wie er ausgeführt wird, oder?

Jetzt besteht noch das 2. Problem mit fetch_object (siehe 1. Beitrag).
ThomasM ist offline  
Alt 15.06.2009, 15:42  
Neuer Benutzer
 
Registriert seit: 04.06.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
ThomasM befindet sich auf einem aufstrebenden Ast
ThomasM eine Nachricht über ICQ schicken
Standard

Ok, das Problem ist gelöst. Ich hatte ein i vergessen, mit

$row = mysqli_fetch_object($result);

funktioniert es

PHP-Code:
$sql "SELECT 
          username, password
        FROM 
          login
        WHERE 
          username
        LIKE
          $username
        LIMIT 1"
;

$result $db->query($sql);

$row mysql_fetch_object($result);

if (
$row->password == $passwort) {
  
$_SESSION['username'] = $username;
  echo 
"Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
    } else {
      echo 
"Benutzername und/oder Passwort waren falsch. <a href=\"login.htm\">Login</a>";
      } 
ThomasM ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einfache Abfrage aus mySQL Datenbank Problem ThomasM PHP Tipps 2009 7 05.06.2009 21:06
Datenbank Problem: Arrays speichern und auslesen funbox Datenbanken 5 16.05.2009 12:33
[Erledigt] Komplexes Datenbank Problem MasterChief Datenbanken 3 10.01.2009 12:06
problem bei adminbereich für bilder in datenbank stellen mobilica PHP Tipps 2009 18 04.01.2009 10:58
Problem mit UPDATE meiner Datenbank phpmax Datenbanken 5 03.01.2009 23:04
While schleife mit Datenbank in ein Dropdown Feld (Umlaut Problem) kintaro PHP Tipps 2008 6 28.08.2007 19:11
Problem mit Zahlen runden PHP Tipps 2006 3 05.06.2006 17:53
Datenbank Problem in Access TaStEn PHP Tipps 2006 2 21.03.2006 12:31
Problem mit array in Datenbank pixelcut PHP-Fortgeschrittene 3 28.02.2006 18:20
Problem beim Abfragen aller Tabellen in einer Datenbank gulli23 Datenbanken 5 26.02.2006 20:04
leere tabellen problem mit zählen Nosferatu PHP Tipps 2006 1 08.01.2006 03:28
Problem Checkboxen - string mit Zahlen die gecheckten setzen Cyberbob_at_tot PHP Tipps 2005-2 5 11.06.2005 11:36
Problem mit Formular und SQL Datenbank PHP Tipps 2005 6 24.03.2005 10:57
Problem mit Datenbank PHP Tipps 2005 3 25.01.2005 18:01
Problem beim importieren einer Datenbank PHP Tipps 2004 8 09.08.2004 15:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql spalten zählen, $db->query zählen, spalten in querry zählen, mysql_num_rows datenbank klasse, spalten in spq db zählen, php sql query spalten zählen, mysql_num_rows like, like password(\'$passwort1\'), mysql_num_rows zählen, php query spalten zählen, db query zählen, mysql query mit db class zählen, mysql_num_rows spalten, zählenmit sql, mit php datenbank spalten zählen, result zählen, mysql_num_rows in klasse, datenbank spalte existiert php echo $db->query mysql_num_rows, sql num_rows, limit mysql_num_rows

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum