PHP
MySQL
Mysqli

PHP * mysqli チートシート

自分用のチートシート(基本)

よくある定番の流れ

<?php
//エラーと警告を表示する設定
ini_set( 'display_errors', 1 );
ini_set( 'error_reporting', E_ALL );

//DBへ接続
$db = new mysqli('DBのアドレスまたはlocalhost', 'ユーザ名', 'パスワード', '使うDB名');

if( mysqli_connect_errno($db) ) {  //接続失敗
    mysqli_close($db);
}
else{  //接続成功
    //入力したいSQL文の作成
    $sql = 'select * from article'

    //SQL文を実行
    $res = $db->query($sql);

    //結果のすべての行を連想配列・数値添字配列で取得
    $row = $res->fetch_all();

    //欲しい情報を上手に取り出すために配列を表示させて確認
    //echo var_dump($row);

    $title1 = $row[0][0];
    $year1  = $row[0][1];

    $title2 = $row[1][0];
    $year2  = $row[1][1];

    //リソースの開放
    $sql->free();
    $res->free();
    $row->free();
    mysqli_close($db);
}
?>

fetch_all()で取り出した情報の見方

//SQL文に対する結果の例

+-----------------------+
| tag_name              |
+-----------------------+
| 音楽                  |
| 食事                  |
| 日常                  |
+-----------------------+

//これを$res->fetch_all()で取り出して
//var_dump()で見ると次のように表示される
//(インデントは僕がつけました)

array(3) { 
    [0]=> array(1) { [0]=> string(6) "音楽" } 
    [1]=> array(1) { [0]=> string(6) "食事" } 
    [2]=> array(1) { [0]=> string(6) "日常" } 
}

//二重の配列になっているとわかる
//この3つを取り出すのは次の通り

$tag1 = $res->fetch_all()[0][0]; //音楽
$tag2 = $res->fetch_all()[1][0]; //食事
$tag3 = $res->fetch_all()[2][0]; //日常

コメント

正直僕は初心者なので、変なとことかあるかも。。。
連想行列好きじゃないから添字行列だけで取れれば良いんだけど、
どうやるか分かんないです誰か教えてください。

この処理を表示用のページに書くのはナンセンスなので、関数化して別のファイルに分けるのが妥当だと思う。