PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP]: if(mysql_connect(...)) <-- Was für eine Abfrage ist das


mf_2
2007-09-20, 13:32:43
Hallo,

Ich bin gerade massiv verwirrt: Bisher war das Bier kalt, der Himmel blau und eine if-Schleife hatte immer einen Operator. Das Bier ist dank des Wetters zwar kälter denn je und der Himmel ist nach wie vor tiefblau, aber plötzlich stolpere ich über sowas:
if($test)
tu_was();

Das prüft wohl denke ich mal, ob die Variable existiert.

Aber was genau macht sowas:
if(mysql_connect("127.0.0.1","user","pw")) OR die ("Keine Verbindung")

Ich kenne mysql_connect, aber ich will wissen was da genau passiert.
Afaik (laut dem php.net Manual) gibt mysql_connect im Fehlerfalle FALSE zurück, aber wiebn genau wird das dann in der if-Schleife verarbeitet?
Kann man das auch so schreiben?:
if(mysql_connect("127.0.0.1","user","pw")==FALSE)
echo "Keine Verbindung";

Dann wäre es mir nämlich klar. Aber momentan stehe ich etwas auf dem Schlauch....

Tommes
2007-09-20, 13:33:52
Eine "if-Schleife" gibt es nicht.

"Afaik (laut dem php.net Manual) gibt mysql_connect im Fehlerfalle FALSE zurück, aber wiebn genau wird das dann in der if-Schleife verarbeitet?"

Und was gibt es zurück, wenn kein Fehler auftritt?

redfalcon
2007-09-20, 13:51:00
"Afaik (laut dem php.net Manual) gibt mysql_connect im Fehlerfalle FALSE zurück, aber wiebn genau wird das dann in der if-Schleife verarbeitet?"


So hab ichs auch in Erinnerung.


Und was gibt es zurück, wenn kein Fehler auftritt?

true
Dann springt er aus der Abfrage raus und macht weiter unten weiter.

Tommes
2007-09-20, 13:53:20
true
Dann springt er aus der Abfrage raus und macht weiter unten weiter.

Eigentlich die ConnectionID, also einen Integer. Die Abfrage ist also if(1337) ...

Abgesehen davon finde ich die OR DIE Geschichte in PHP auch nicht sehr schön.

Tommes
2007-09-20, 13:55:07
Außerdem kann es ohne die Zwischenspeicherung der ConnectionID in einer Variable auch gar nicht gehen, der Code dort oben ist sinnlos, ich weiß noch nicht mal genau ob nach if ein OR DIE kommen kann.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('keine Verbindung möglich: ' . mysql_error());
}
echo 'Verbindung erfolgreich';
mysql_close($link);

So macht es Sinn.

Thomas(:
2007-09-20, 14:00:08
Wenn Du nur eine Verbindung verwendest, musst Du dir die Link Resource nicht merken.

Achaja: Der Interpreter bearbeitet den Block der Abfrage wenn die Bedingung nicht 0, false oder null ist. Wo die Bedingung herkommt ist dabei egal.
if(a == b && c > 0) ist das gleiche wie: test = (a==b&&c>0); if(test)

Tommes
2007-09-20, 14:01:01
Okay, das wusste ich auch noch nicht.

medi
2007-09-20, 17:35:21
Hallo,

Ich bin gerade massiv verwirrt: Bisher war das Bier kalt, der Himmel blau und eine if-Schleife hatte immer einen Operator. Das Bier ist dank des Wetters zwar kälter denn je und der Himmel ist nach wie vor tiefblau, aber plötzlich stolpere ich über sowas:
if($test)
tu_was();

Das prüft wohl denke ich mal, ob die Variable existiert.

Aber was genau macht sowas:
if(mysql_connect("127.0.0.1","user","pw")) OR die ("Keine Verbindung")

Ich kenne mysql_connect, aber ich will wissen was da genau passiert.
Afaik (laut dem php.net Manual) gibt mysql_connect im Fehlerfalle FALSE zurück, aber wiebn genau wird das dann in der if-Schleife verarbeitet?
Kann man das auch so schreiben?:
if(mysql_connect("127.0.0.1","user","pw")==FALSE)
echo "Keine Verbindung";

Dann wäre es mir nämlich klar. Aber momentan stehe ich etwas auf dem Schlauch....

lies dir mal das hier durch:

http://www.mycsharp.de/wbb2/thread.php?threadid=17536&sid=d692e8442300d4751e7e3719647ad874

geht zwar um c# aber ist auch auf andere sprachen übertragbar und wird dir die augen öffnen ;)

Coda
2007-09-20, 17:45:14
Es wird einfach der Return-Wert der Funktion überprüft.

if($test) ist dasselbe wie if($test==true)

Xanthomryr
2007-09-20, 18:07:06
Es wird einfach der Return-Wert der Funktion überprüft.

if($test) ist dasselbe wie if($test==true)

if(!$test) wäre dann if($test==false), oder?

Gast
2007-09-20, 19:36:39
if(!$test) wäre dann if($test==false), oder?

jep stimmt! ;)

mf_2
2007-09-21, 10:51:37
Danke für eure zahlreichen Antworten, jetzt ist mir das ganze schon viel klarer. :)

The_Invisible
2007-09-21, 10:54:13
es gilt in php alles als true außer 0, "" und false

mfg