![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
![]() ich habe grad ein ziemliches problem und bin bei der überlegung, ob es sinnvoll ist, z.b. so
if ($variable= mysql_query($sql_befehl,$verbindung) abzufragen. wird ein query AUF JEDEN FALL durchgeführt, egal ob sich jetzt aufgrund von anderen abfragen in der datenbank jetzt etwas ändert/zutrifft oder nicht? wird d.h. hier immer TRUE ausgegeben (wodurch eine solche abfrage natürlich sinnlos wäre)? oder nur dann, wenn wirklich der query auch das tut, was im befehl $sql_befehl drinsteht?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
![]() |
![]() |
![]() |
#2 |
Master
![]() |
![]() mysql_query liefert true wenn der Befehl (insert, update, select) erfolgreich ausgeführt wurde. Bei einem Select heisst das aber nicht das du acuh was zurück bekommst. dh eine select abfrage kann in ordnung gegangen sein (mysql_query liefert true) aber du bekommst keine Zeilen von der Datenbank!
Ich hoffe das war das was du gemeint hast. lg
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
![]() aber was ich nicht verstehe, ist wieso ich bei einem SELECT ein TRUE zurückbekomme, wenn die bedingung WHERE nicht erfüllt wurde, d.h. wenn von der db nix zurückkommt. wieso ist das dann TRUE?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
![]() |
![]() |
![]() |
#4 |
Master
![]() |
![]() Die where Bedinnug is ja erfüllt du bekomst alle wo zb user='Sonic' sind und das können 0>x Rows sein. Dh wenn es keinen Eintrag mit user=Sonic gibt geht die Abfrage ja in Ordnung du bekommst alle zeilen zurück wo user= Sonic ist in diesem Fall sind das dann 0 Zeilen.
mysql_query liefert nur False wenn die Syntax nicht gestimmt hat oder die Datenbank einen Fehler hatte usw. Wenn der Befehl aber ausgeführt wurde is er immer true auch wenn 0 Zeilen Betroffen waren. Ich hoffe jetzt wars verständlicher. ![]() lg
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
![]() also wird nur ein datenbank-, kein abfragefehler bei SELECT ein FALSE hervorrufen. WAS zurückgeliefert wird, beeinflußt das nicht, solange ETWAS zurückgeliefert wird (in diesem fall wohl 0). ist das soweit korrekt? das wäre das 1. mal, daß ich höre, daß eine rückgabe mit dem wert 0 ein TRUE hervorruft. somit ist also eine abfrage nach dem vorhandensein eines wertes in einer db mittels SELECT sinnlos, denn da wird immer TRUE zurückkommen, egal ob der wert drinsteht oder nicht, wenn die db ok ist und der query durchgeführt wurde.
stellt sich mir nur eine frage: wie mache ich das dann, eine abfrage nach einem user, wenn nicht in dem ich die db nach dem user und dem dazugehörigen passwort durchsuche? wie überprüfe ich dann, obs den tatsächlich gibt? in dem ich mir den inhalt der db in ein array abspeichere (mysql_fetch_array) und dann das array in einer schleife durchsuche? gehts ned unkomplizierter?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
![]() |
![]() |
![]() |
#6 |
Master
![]() |
![]() Genau, wenn etwas (was auch nichts sein kann) zurückgeliefert wirt ists immer true!
Mit mysql_num_rows bekommst du die zurückgelieferten Zeilen von einer Select Abfrage heraus. Also machst du zuerst einen select auf die User Tabelle und dann schaust du mit mysql_num_rows wieviele zeilen geliefert wurden. (mysql_num_rows >0 user existiert schon) lg
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
![]() $sql = "SELECT * FROM user WHERE username='" . $user . "' AND password='" . $password . "'";
$abfrage = mysql_query($sql, $db_on); if(mysql_num_rows($abfrage)>0) { ... funzt! danke vielmals. ![]()
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|