2009/02/07

phpのデバッグ

echoとprint
これは基本。
echo や print は関数ではなく構文なのでカッコが不要です。

echo $something."";
print $something."";

などと省略して書けます。

echo と print は(ほぼ)同じものですが、
echo の方が文字数が少ないのでオススメです。

print_r

引数の型に関係なく変数の中身を表示できます。
配列や連想配列、オブジェクトなどもOK!

print_rは、PHPのバージョン4.3.0以降、第二引数が追加されました。

//$somethingのprint_r表示を$outputに入れる
$output = print_r($something,true);

とするとprint_rの出力結果を変数に入れることができます。
(便利です!)

print_rはブラウザで表示させるときは見づらいので、

echo "改行";
print_r($something);
echo "改行"

などとしてあげるとブラウザで改行がそのまま表示されます。
これも関数にしておくと便利かもしれません。

/*
preタグで囲んだprint_r出力
@param mixed $var 出力したい変数
@return void
*/

function pre_print_r($var){
echo "改行";
print_r($var);
echo "改行";
}
スタイルシートなどで見やすくすると良いと思います。
var_dump
print_rの詳細版です。構造と値だけではなく、型やサイズもあわせて表示します。
オブジェクトの場合、クラス名までわかるので便利です。
厳密にチェックしたい時などに。

例えば
$profile = array(
"company" => "FACTORY",
"name" => "ジェイさん",
"birth_month" => 3,
"birth_day" => 1,
"hobby" => array("dance","プログラム","音楽")
);
var_dump($profile);

とすると

array(5) {
["company"]=>string(7) "FACTORY"
["name"]=>string(10) "ジェイさん"
["birth_month"]=>int(3)
["birth_day"]=>int(1)
["hobby"]=>array(3) {
[0]=>string(5) "dance"
[1]=>string(10) "プログラム"
[2]=>string(4) "音楽"
 }
}

と出力されます。

DBに接続して検索表示の基本

require( )とinclude( )との違い。
include("http://www.yahoo.co.jp/index.html");
require("http://www.yahoo.co.jp/index.html");

・違いは?
☆ include - 読み込めなくてもスルー
☆ require - 読み込めないと中止

require( )が処理中に1回だけ読み込まれるので、
ループの中で読み込むファイル名を変える時などは
include( )で処理します。

require( )やinclude( )はローカルにあるファイルだけでなく、
リモートにあるファイルもURLを使って読み込む事が出来ます。


require_once'DB.php';
$username = "dbuser";//DBユーザー名
$password = "dbpass";//パスワード
$host = "dbhost";//DBのホストlocalhost
$database = "dbname";//利用するDB名
$db = DB::connect("mysql://$username:$password@$host/$database");//接続
//できなかった場合
if (DB::isError( $db )) {
die($db->getMessage());
}
//DBにリクエストを要求する
$sql = "select * from table";
$result = $db->query($sql);

if (DB::isError( $result )) {
die($result->getMessage());
}

while($row = $result->fetchRow()){
echo $row[0]; // 返却データをループ
}
?>