電子書籍の厳選無料作品が豊富!

こんにちは。PHPの解説書を見ながらMYSQLへの接続するコマンドを理解しようとしているのですが、仕組みがいまいちよくわかりません。その本で紹介しているやり方は、以下のとおりです。

$dbcnx = @mysql_connect('localhost', 'root', 'mypasswd');
if (!$dbcnx) {
exit('<p>Unable to connect to the ' .
'database server at this time.</p>');
}

後にデータベースを選択し、編集するコマンドが続きます。何が解らないかといいますと、一行目です。この時点でおそらくmysqlに繋がるのだと思いますが、でもこれだけでは$dbcnxに値を代入しているだけではないのでしょうか?う~ん、そういうものだと理解するのが一番だと思うのですが、いまいちプログラムの理屈が良くわかりません。
砕いて説明していただけるととても助かります。ご存知の方おられましたらよろしくお願いいたします。

A 回答 (2件)

結果的に、$dbcnxに値が代入されるだけです。

ただ単に数値を返しているわけではありません。

mysql_connect関数の中では、localhostのMySQLサーバーにユーザー名rootパスワードmypasswdで、接続するという作業を頑張ってやっています。(TCP接続を行い、決められた手順でユーザー名とパスワードを送って、サーバーに認証してもらいます。)

その作業の結果として、数値(この場合はMySQLリンクID)が返却されます。(そして、$dbcnxに代入されます。)

こんなんで、どうでしょう? (^^;

参考URL:http://php.s3.to/man/function.mysql-connect.html

この回答への補足

ありがとうございます。やっぱり実際にこの時点で接続しちゃうんですね。う~ん、代入処理のはずなのに、と思ってしまうんですけど、でも少しだけ心のもやもやが取れたような気もします。ということは、次に続く、mysql_select_dbも同様の仕組みなのでしょうか?コードは以下のようになります。

if (!@mysql_select_db('ijdb')) {
exit('<p>Unable to locate the joke ' .
'database at this time.</p>');
}

自分の解釈としては、mysql_select_db('ijdb') はif構文の条件でしかないと思っているんですけど、その条件提示をしている最中にもう実行しちゃうということなんでしょうか?

補足日時:2004/12/30 19:25
    • good
    • 0

>その条件提示をしている最中にもう実行しちゃうということなんでしょうか?



その通りです(^^/

if文の中の条件式がまず評価されます。
条件式がこの場合、関数なので関数が実行されます。
関数が(いろいろなお仕事をして)値を返します。
if文はその値をみて、処理を分岐します。

ここまでわかれば、PHPだけでなく、どんなプログラムでもできます! (^^;
    • good
    • 0
この回答へのお礼

ありがとうございます!なんだか、解ってしまったような気分です。もやもやがどっかいってしまいました。

お礼日時:2004/12/30 20:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!