twitter関連サービス1


ツイッタータイムラインのアイコンが
リールになったスロットマシン

twitter関連サービス2


OpenLaszloで開発された
ツイッター検索表示サービス
【2010/3/12twinavi掲載!!】

事業者情報



植林で地球温暖化防止に貢献中☆

PHPメモ

個人的な備忘録です。。。




文字化け対策

文字化けして日本語が???になる場合、
PHPのバージョンが5.2.3以上、MySQLのバージョンが5.0.7以上なら、mysql_set_charset("utf8");
そうじゃなかったらmysql_query("SET NAMES utf8");
を、クエリの前に発行する。

GET/POST取得の効率的な記述

青いところ。配列で取得すれば項目名をなんども書く手間がなくなる。

<form method="POST" action="">
名前<input type="text" name="name" ><br>
住所<input type="text" name="address" ><br>
電話<input type="text" name="tel" ><br>
<input name="save" type=submit value=保存><br>
</form>
<?php
$targets = array('name','address','tel');
$a = array();
foreach($targets as $target) {
 $a[$target] = @$_POST[$target];
}
if(!is_null($_POST[save])){
print "名前:".$a[name]."<br>";
print "住所:".$a[address]."<br>";
print "電話:".$a[tel]."<br>";
}
?>
 


INSERT

[1]  INSERT INTO テーブル名 VALUES (値, 値, 値)
[2]  INSERT INTO テーブル名 (フィールド名, フィールド名, フィールド名) VALUES (値, 値, 値)
[3]  INSERT INTO テーブル名 SET フィールド名=値, フィールド名=値,フィールド名= 値

<?php
// DB名はtest、テーブル名はbook、テーブルのフィールドは id,name,price 
$cn = @mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$_DB_table = "book";  
// 
// INSERTの記述は次の3種類
// 
// [1]全フィールドを対象:フィールド名の指定省略できるが、全フィールドの値を指定する必要がある
mysql_query("insert into $_DB_table values ('','ABC book',11111)") or die(mysql_error());

// [2]特定のフィールドのみ対象:INSERT-VALUE構文。フィールド名と値は別指定だが順番を合わせる
//mysql_query("insert into $_DB_table (name,price) values ('ABC book',22222)") or die(mysql_error());

// [3]特定のフィールドのみ対象:INSERT-SET構文。フィールド名=値のセットで指定する
//mysql_query("insert into $_DB_table set name='ABC book',price=33333") or die(mysql_error());
 
// INSERT成功したら確認のためにSELECT表示
$res = mysql_query("select * from $_DB_table") or die(mysql_error());
echo "<table border='1'><tr><th>名前</th><th>値段</th></tr>";
while ($row = mysql_fetch_array($res)) {
    echo "<tr><td>".$row["name"]. "</td><td>" .$row["price"]. "</td></tr>";
}
echo "</table>";
mysql_free_result($res);
 
 
mysql_close($cn);
?>
 
 



UPDATE

UPDATE テーブル名 SET フィールド名=値, フィールド名=値 WHERE 条件式

<?php
// DB名はbooks_db、テーブル名はbooks、テーブルのフィールドは id,name,price 
$cn = @mysql_connect("localhost", "dbuser", "password") or die(mysql_error());
mysql_select_db("books_db") or die(mysql_error());
$_DB_table = "books";  
 
// 更新。WHERE句を忘れたら、全件が同じ値になってしまうので厳重に注意!!
mysql_query("update $_DB_table set name='XXX' where price=3222 ");
 
// 成功したら確認のためにSELECT表示
$res = mysql_query("select * from $_DB_table") or die(mysql_error());
echo "<table border='1'><tr><th>名前</th><th>値段</th></tr>";
while ($row = mysql_fetch_array($res)) {
    echo "<tr><td>".$row["name"]. "</td><td>" .$row["price"]. "</td></tr>";
}
echo "</table>";
mysql_free_result($res);
 
mysql_close($cn);
?>
 
 



DELETE

DELETE FROM テーブル名 WHERE 条件式


<?php
// DB名はbooks_db、テーブル名はbooks、テーブルのフィールドは id,name,price 
$cn = @mysql_connect("localhost", "dbuser", "password") or die(mysql_error());
mysql_select_db("books_db") or die(mysql_error());
$_DB_table = "books";  
 
// 削除。WHERE句を忘れたら、全件削除になってしまうので厳重に注意!!
mysql_query("delete from $_DB_table where name='XXX' ");
 
// 成功したら確認のためにSELECT表示
$res = mysql_query("select * from $_DB_table") or die(mysql_error());
echo "<table border='1'><tr><th>名前</th><th>値段</th></tr>";
while ($row = mysql_fetch_array($res)) {
    echo "<tr><td>".$row["name"]. "</td><td>" .$row["price"]. "</td></tr>";
}
echo "</table>";
mysql_free_result($res);
 
mysql_close($cn);
?>
 
 


REPLACE

データ保存構文。INSERTと似ている。
簡単に言うと、INSERTと違って、重複データは上書きで保存される。上書きというのは、いったん旧データを削除して新データを挿入、になる。重複かどうかの判断はUNIQUEやPRIMARY KEYのフィールドで行っているため、それらの設定をしてなければINSERTと同じ動きになる。

REPLACE は INSERT とほぼ同じように動作しますが、唯一異なる点として、UNIQUE インデックスまたは PRIMARY KEY に関して新しいレコードと同じ値がテーブル内の以前のレコードに含まれていると、以前のレコードが削除されてから新しいレコードが挿入されます
テーブルに UNIQUE インデックスまたは PRIMARY KEY が設定されていない場合、REPLACE コマンドを使用しても意味がありません。この場合、新しいレコードが既存のものと重複しているかどうかの判別に使用するインデックスがないため、REPLACE コマンドは INSERT と同じになります。
(MySQLリファレンスマニュアルより抜粋)


jsonデータ表示

  • file_get_contents()・・・ファイルの内容をすべて取得する。引数にWebサイトのURLだとそこのソースを取得する。戻りは文字列。
  • json_decode()・・・JSON文字列(例:)をデコードする。戻りはオブジェクト。
ツイッターで日本語限定で「RT」で検索した結果の、アイコンとIDを表示する例:

<?php
$contents = file_get_contents("http://search.twitter.com/search.json?q=RT&lang=ja");
//echo $contents; // 単に文字列が表示される
$contents = json_decode($contents);
foreach($contents->results as $item){
    echo "<img src='" .$item->profile_image_url. "'></img>" . $item->from_user."<hr>";
}
?>


URLエンコードされたクエリ文字列生成

http_build_query($配列)を使う。戻り値はクエリ文字列で、URLエンコード済。WebサービスAPIを使ってPHPスクリプトからデータ取得する場合など。

<?php
$data = array('contry'=>'japan','city'=>'京都','music'=>'death metal');
echo http_build_query($data);
?>

出力は:
contry=japan&city=%E4%BA%AC%E9%83%BD&music=death+metal


DB接続とクローズ

mysql_connect(サーバ名、ユーザ名、パスワード);

<?php
$cn = mysql_connect("localhost", "root", "password") or die(mysql_error());
print ("DB接続成功");


mysql_close($cn);
?>


DB選択

mysql_select_db(データベース名);

<?php
$cn = @mysql_connect("localhost", "root", "password") or die(mysql_error());
print ("DB接続成功<br>");

mysql_select_db
("mysql") or die(mysql_error());
print ("DB選択成功");

mysql_close($cn);
?>


DBクエリー表示

テーブルのデータをselectして表示するには、mysql_query()とmysql_fetch_array()をセットで使う。
mysql_fetch_array()はクエリー結果の行を連想配列あるいは添字配列で取得できる。
連想配列の場合は、テーブルのフィールド名の指定ができる。
※mysql_fetch_assocだと連想配列専用、mysql_fetch_rowだと添字配列専用。

<?php
$cn = @mysql_connect("localhost", "root", "password") or die(mysql_error());

mysql_select_db("mysql") or die(mysql_error());

$res = mysql_query("select * from help_category") or die(mysql_error());
echo "<table border='1'><tr><th>id</th><th>name</th></tr>";
while ($row = mysql_fetch_array($res)) {
    echo "<tr><td>".$row[0]. "</td><td>" .$row["name"]. "</td></tr>";
}
echo "</table>";
mysql_free_result($res);


mysql_close($cn);
?>


die,exit

スクリプトを終了させる。dirはexitのエイリアスなので、両者は全く同じもの。関数じゃないのでカッコは不要。

(1) 単なるエラー終了

<?php
print "1<br>";
print "2<br>";
    //終了
    die;
print "3<br>";
?>

1
2


(2) 捨て台詞付エラー終了

<?php
print "1<br>";
print "2<br>";
    //実行中のファイル名と行数を出力して終了
    die((string)__FILE__ ."の". __LINE__ ."行目で停止");
print "3<br>";
?>

1
2
C:xampphtdocstest.phpの5行目で停止






配列

<?php
//キー&値のセットで配列を作る("キー"=>"値")
$A = array("a"=>"あ","b"=>"い","c"=>"う");

//配列の先頭に値を入れる
array_unshift($A,"山");

//配列の最後に値を追加する
array_push($A,"川");

print "<pre>";
print_r($A);
print "</pre>";

print "■配列の要素の数を数える<br>";
$cnt = count($A);
print "要素数は <b>$cnt</b><br>";

print "■配列の<b>値</b>を全部表示 foreach(配列 as 格納先)<br>";
foreach($A as $data){
	print "$data<br>";
}

print "■配列の<b>キー&値</b>を全部表示 foreach(配列 as キー => 値){}<br>";
foreach($A as $key => $val){
	print "キーは<b>$key</b> / 値は<b>$val</b> <br>";
}

// ----------------------

//値のみで配列を作る。キーは0から自動割り当てされる
$B = array("ア","イ","ウ");
print "<pre>";
print_r($B);
print "</pre>";

?>


■出力

Array
(
[0] => 山
[a] => あ
[b] => い
[c] => う
[1] => 川
)
■配列の要素の数を数える
要素数は 5
■配列のを全部表示 foreach(配列 as 格納先)





■配列のキー&値を全部表示 foreach(配列 as キー => 値){}
キーは0 / 値は
キーはa / 値は
キーはb / 値は
キーはc / 値は
キーは1 / 値は
Array
(
[0] => ア
[1] => イ
[2] => ウ
)

最終更新日: 2010年5月13日(木) 16:32 JST|537 閲覧件数