とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

symfonyを使わないでプログラミング

cakePHPを始めようと思ったら別タスクにて、symfonyを使わないでWebサイトを作るとのこと。
なので、DBの接続とか意識してやらなくてはなりませんでした…


1.
PHPエラー集」
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
対象:$add = 'INSERT INTO site(title, url, melamin) VALUES(' .$title. ',' .$url. ',' .$parsent')';
最後の$parsent後に"."が無かったので、変数と文字列がうまくくっついてなかった。


syntax error, unexpected T_VARIABLE
対象:$results = mysql_query('SELECT * FROM site ORDER BY hoge LIMIT 0,10')
いちばん最後に";"がついていなかった。


syntax error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';'
対象:echo rank->title."です!";
rank->title → $rank->title()で解決
オブジェクトの扱いに慣れてないです。



2.
mysql_queryでSQL文を発行し、結果を配列で取得する」
下記の場合だと結果が一つしかとれない
$query = mysql_query('SELECT * FROM site ORDER BY melamin LIMIT 0,10');
$results = mysql_fetch_object($query);
print_r($results);

↓結果
stdClass Object
(
[id] => 1
[title] => testsite
[url] => http://hoge.com
[hoge] => 14.5
)


で、配列として取るには…
mysql_fetch_array()を使えばよいと思ったのだが、arrayを使っても1つ分の結果しかとれず
何度も"mysql_fetch_object($query)"を出力してやる必要がある。


そこで

$sql = 'SELECT * FROM site ORDER BY hoge desc LIMIT 10';
$query = mysql_query($sql);
$num = mysql_num_rows($query);
$results = array();
for($count=0; $count < $num; $count++){
$result = mysql_fetch_object($query);
$data = array(
"title" => $result->title,
"url" => $result->url,
"hage" => $result->hage,
);
$this->results[] = $data;
}


このように"mysql_num_rows"で要素の数を取得して
その分ループして連想配列に詰め込んでいけばよい。


また出力するときにエラーが何度も出て悩んだのが、連想配列の要素の取得方法。
print_r($rank->title) とか
print_r($rank[0]) とか
どうやって要素をとってくるのか色々迷走していたのですが、


print_r($rank["title"]);
これが正解でした。