2010.05.06

FAQ 『標準MySQL 改訂第3版』

標準MySQL 改訂第3版



■質問1:339ページの下の方に「function getFormData」関数が定義されていますが、getFormData関数の具体的な動きと意味が理解できません。詳細を教えてください。



■質問2:340ページの下の方に「function makeSqlStr」関数が定義されていますが、makeSqlStr関数の具体的な動きと意味が理解できません。



■質問3:141ページ目のインデックスについて、インデックス機能とはどういう機能でしょうか? またそのメリットは?



■質問4:342ページで使われている「mysql_fetch_assoc」はどういう役割をするのでしょうか?



■質問5:342ページで使われている「$_SERVER」はどういう役割をするのでしょうか?



■参考URL




■質問1:339ページの下の方に「function getFormData」関数が定義されていますが、getFormData関数の具体的な動きと意味が理解できません。詳細を教えてください。



■回答1:

 getFormData関数はフォームから送信されたデータを取得しています。

 $strにはGET方式($_GET["キー名"])もしくはPOST方式($_POST["キー名"])によって送信されたデータを格納しています。

 $str = $_REQUEST["キー名"]でも同様の処理を行うことができます。

 下記をご参照ください。



http://www.php.net/manual/ja/language.variables.external.php



 htmlspecialcharsは&やクオートなどの文字列を実体参照に変換します。

 下記をご参照ください。



http://jp2.php.net/manual/ja/function.htmlspecialchars.php



 magic_quotes_gpcが有効になっている場合、送信されたデータはバックスラッシュによりエスケープされます。magic_quotes_gpcが有効である場合、付加されたバックスラッシュを取り除き、データを返します。ここでは三項演算子を使用しています。

 magic_quotes_gpcについては下記をご参照ください。



http://jp2.php.net/manual/ja/function.get-magic-quotes-gpc.php



 三項演算子はこちらをご参照ください。



http://www.php.net/manual/ja/language.operators.comparison.php

 




■質問2:340ページの下の方に「function makeSqlStr」関数が定義されていますが、makeSqlStr関数の具体的な動きと意味が理解できません。



■回答2:

 makeSqlStr関数はデータベースにSQL文字列を発行するため、文字列のエスケープを行います。データベースにSQLを発行する際、クォート文字はエスケープする必要があります。addslashes()により、クォート文字等必要なエスケープを行います。

 下記をご参照ください。



http://jp2.php.net/manual/ja/function.addslashes.php

 

 データが空文字であれば、NULLを、空文字でなければ、シングルクオートで囲んで値を返しています。



データベースで更新される値:

question_c = NULL … NULL値が入る

question_c = ‘ABC’ … 文字列のABC値が入る



 データベースのNULL値については下記をご参照ください。



http://dev.mysql.com/doc/refman/5.1/ja/null-values.html




■質問3:141ページ目のインデックスについて、インデックス機能とはどういう機能でしょうか? またそのメリットは?



■回答3:

 インデックスは索引と考えるとわかりやすいかと思います。目的のデータを迅速に取り出すための仕組みです。

 下記をご参照ください。



http://dev.mysql.com/doc/refman/5.1/ja/mysql-indexes.html




■質問4:342ページで使われている「mysql_fetch_assoc」はどういう役割をするのでしょうか?



■回答4:

 mysql_fetch_assoc()はmysql_query()により得られた結果セットから1行のデータを連想配列で取得します。

 取り出す行がなくなるとFALSEを返すので、whileと併用することで、全行のデータを取得できます。

 下記をご参照ください。



http://jp2.php.net/manual/ja/function.mysql-fetch-assoc.php




■質問5:342ページで使われている「$_SERVER」はどういう役割をするのでしょうか?



■回答5:

 $_SERVERはサーバ情報を含んだPHPの変数です。

 下記をご参照ください。


http://jp2.php.net/manual/ja/reserved.variables.server.php




■参考URL

 参照として挙げさせていただきましたが、マニュアルをご覧いただきますと、詳しい理解が得られるかと思います。

 本書で取り上げていない関数や機能についてもぜひ調べてみてください。



PHPマニュアル:

http://jp2.php.net/manual/ja/index.php



MySQLマニュアル:

http://dev.mysql.com/doc/refman/5.1/ja/