php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.01.2011, 22:52  
Benutzer
 
Registriert seit: 30.01.2011
Beiträge: 38
PHP-Kenntnisse:
Anfänger
BJ1995 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] MySQL-Abfrage mit while Schleife oder mit where

Also wenn ich eine MySQL-Abfrage mache, ist es dann besser es so zu machen
PHP-Code:
$vorhanden=mysql_query("select name from tabelle"); 
while(
$dsatz=mysql_fetch_assoc($vorhanden)){ 
       if(
$dsatz["name"]==$name){
              echo 
"Du bist eingeloggt."
       
}

oder eher so
PHP-Code:
$vorhanden=mysql_query("select name from tabelle where name=$name");
$dsatz=mysql_fetch_assoc($vorhanden); 
if(
$dsatz["name"]==$name){
       echo 
"Du bist eingeloggt."

Welche Variante ist denn schneller oder braucht weniger Traffic???
BJ1995 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.01.2011, 22:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Die zugrundeliegende (Fehler)Logik ist eine andere. Und im zweiten fehlt die Fehlerverarbeitung.

[edit]

Die Variante 2 ist sowieso Unsinn. Selektiere alle Datensätze zu einem Namen und prüfe dann die Namen auf Gleichheit..

Bitte Forenstruktur beachten!

[MOD: verschoben]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 30.01.2011, 23:08  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Lass MySQL die Arbeit erledigen und selektier dort das, was du brauchst.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 31.01.2011, 01:43  
Erfahrener Benutzer
 
Benutzerbild von Alpha Centauri
 
Registriert seit: 05.02.2005
Beiträge: 278
Alpha Centauri
Standard

SELECT spalte FROM tabelle WHERE name = '.$name.'

So würd ich das machen. Wie Chris schon schreibt immer die Daten fertig formatiert abfragen. PHP sollte nur zum Anzeigen genutzt werden. Ausgereift ist die Abfrage sicher noch nicht, aber ich geh mal davon aus, dass sie nur zum lernen dienen soll.

SG
__________________
Alpha Centauri ist offline   Mit Zitat antworten
Alt 31.01.2011, 01:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

1. Auf jeden Fall macht es keinen SInn, dass „spalte“ wie oben „name“ ist. Für eine Authentifizierung sollte hier vielmehr das Passwort ermittelt werden, zum Wegspeichern zusätzlich eine Nutzer-ID.
2.
PHP-Code:
WHERE name '.$name.' 
Da fehlen Stringbegrenzer
3. Sollte der Fall abgefragt werden, dass mehr als ein Datensatz geliefert wurde. Sollte nie vorkommen, prüfen sollte man trotzdem.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 31.01.2011, 04:26  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Ersteinmal: Hi

Wenn ich etwas an deinem Quellcode da oben aussetzen wollen würde wäre es die Art und weise wie du SQL-Statements definierst. Da du ja dich gerade in MySQL in zusammenspiel mit PHP reinarbeitest gewöhn dir besser folgendes an:

1. SQL-Befehle schreibe "Capitalized" ( komplett groß - aber nur die Befehle! )
2. SQL-Statements verfolgen immer das selbe Schema, folglich kannst du dir dein Query auch so zusammenbauen, das du es selbst bei 500 zeichen noch lesen kannst, ohne das es in einer Zeile steht.
3. SQL-Injections sind so das blödeste was dir in der Zukunft passieren kann: http://de.wikipedia.org/wiki/SQL-Injection , sorg für escaping.

In deinem Beispiel würde das Query demnach so aussehen
PHP-Code:
$query "SELECT name FROM tabelle WHERE name='".mysql_real_escape_string($name)."'";
$result mysql_query($query);
if ( !
$result ) echo "ohoh... : ".mysql_error(); 
Der Lesbarkeit und dem Informationsgehalt von Quellcode ( Dokumentation ) kann man das ganze auch so definieren:
PHP-Code:
$query "SELECT name "// benötigte felder: name
            
"FROM tabelle "// aus Tabelle: tabelle
            
"WHERE name='".mysql_real_escape_string($name)."'"// escapen wegen sql-injections

$result mysql_query($query);
if ( !
$result ) echo "ohoh... : ".mysql_error(); 
der PHP-Mysqli-Client unterstüzt in Verbindung mit Prepared-Queries auch eine art Templating incl. Escaping. Kann man nutzen wenn man die Querys nicht als String brechen möchte, oder beispielsweise die Querys selbst als Templates irgendwo hin ausgelagert hat ( beispielsweise in eine XML oder Textdatei ).

Als nächstes versuch die $variablen immer so zu definieren das du weißt wozu sie in dem aktuellen Quellcode sind.

$vorhanden und $dsatz sind für dich ja vielleicht in dem moment wo du den Quellcode da hintippst logisch, für mich z.b. eher nicht, ich kann anhand des Variablennamens $vorhanden nicht feststellen ob es ein Query ist, ein Resultat oder sonstwas.

PHP-Code:
$result_AllMembers mysql_query(/* SQL-STMT */);
if ( 
$result_AllMembers ) {

   while (
$data_AllMembers mysql_fetch_assoc($result_AllMembers) ) {
   
     
$result_ExtMemberData mysql_query(/* SQL_STMT */);
     if ( 
$result_ExtMemberData ) {

        
//...

     
} else {
        throw new 
Exception ("Trouble while executing SQL-STMT for result_ExtMemberData : ( ".mysql_errno()." ) ".mysql_error());
     }

   }

} else {
   throw new 
Exception ("Trouble while executing SQL-STMT for result_AllMembers : ( ".mysql_errno()." ) ".mysql_error());

__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


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
mysql zwischenabfrage vor schleife Herbert40 Datenbanken 2 29.08.2010 01:31
SQL Abfrage Fehler nach Umstieg von MySQL4 auf MySQL 5 chefmaik PHP Tipps 2010 5 05.08.2010 16:02
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] Probleme mit While Mysql schleife GigaToni PHP Tipps 2009 11 29.08.2009 14:32
MySQL Abfrage mit PHP extrem langsam kip Datenbanken 6 24.08.2009 11:11
erweiterte abfrage - where DarkManX Datenbanken 2 02.02.2007 17:14
Mehrere Werte in WHERE abfrage McNet Datenbanken 6 23.04.2006 02:06
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
WHERE Falsche Abfrage? Kein MySQL Fehler PHP Tipps 2005-2 10 30.09.2005 10:43
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
MySQL auslesen ohne while schleife PHP Tipps 2005 3 10.05.2005 12:43
php Variablen in MySQL Abfrage verwenden (WHERE Bedingung) PHP Tipps 2005 20 20.04.2005 20:05
if abfrage in while schleife PHP Tipps 2004 1 29.09.2004 22:02
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql schleife beispiel, mysql while schleife, mysql while, mysql while schleifen php, mysql while-schleife, mysql php 2 mal die gleiche abfrage in while, php schleife in select abfrage, mysql query in while schleife, mysql abfrage in schleife, mysql schleife select, php weitere mysql abfragen in einer while, while schleife mysql, mysql abfrage mit for schleife php, beispiel schleife in mysql, mysql schleife in abfrage, mysql php schleife abfrage, php abfrage mysql schleife, mysql schleife in schleife, mysql while loop beispiel, 2sql abfragen in einer while schleife

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:02 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