PHP で MySQL

require エラーにくじけたので気分転換。

環境

  • ubuntu 14.04
  • php 7
  • mysql 5.5

そして 非推奨になりました というトラップを回避するために疲れました。

php include

WordPress でもおなじみの php で html を分割してて呼び出すアレ。

<?php include($_SERVER['DOCUMENT_ROOT'] . '/test/sample.php'); ?>

DOCUMENT_ROOT はドメイン直下のフォルダ。階層が低いとことか複雑なときに楽。ヘッダーとかフッターとかサイドバーとかとか。php はすげー適当にしか触れたことないからきちんとメモしてく。

MySQL に接続

<?php
$nyaa = new mysqli("localhost", "user", "password", "testdb";)
  if ($nyaa->connect_error) {
    echo $nyaa->connect_error;
    exit();
  } else {
    $mysqli->set_charset("utf8");
  }
?>

おそろしあ。こんなに楽にかけるのか。

もし $nyaa が connect_error なら 直近の接続エラーの内容を文字列で返す。それ以外は文字を utf8 にセットする。文字のセットは大事らしい。あと utf-8 にしちゃいけないらしい。

処理

テーブルを新規作成してとかそのへんは Ruby のときに同じことやったので省略。testdb というデータベースと clan というテーブルがあることにします。

パラメータを与えて、同じ id のデータをひっぱってくる。

$id_number = filter_input( INPUT_GET, "p" );
$parameter = "select * from sample_table where id = $id_number";?>

よくある “?p=なんとか” のかたち。アドレスの末尾につけることでパラメータとして与えることができる。

$sql = "select * from clan";

if ($result = $mysqli->query($sql)) {
  while ($row = $result->fetch_assoc()) {
   echo '<li><a href="?p=', $row['id'], '">', $row['name'],'</a></li>';
    }
$result->close(); // 閉じる
}

これで id とクラン名が増えても勝手に吐き出す。区切りが必要なら “select * from book_content limit 10” とかにする。今回は与えられたパラメータと同じ id のカラムのデータをとりあえずひっぱってくるだけなので

<?php
if ($result = $mysqli->query($parameter)){
$row = $result->fetch_assoc();
 echo '<h3>', $row['name'], '</h3>';
 echo $row['title'];
 } else {
 echo '';
 }
 ?>

これをうまいことやれば自分だけのリファレンスなりデータベースなりが作れて幸せになれます。やったね。

Ruby にめげたついでに RVM から rbenv に乗り換えようと思います。