以前PDOクラスを使用してmysqlに接続してデータベースを操作する方法を書きました。今回はmysqliを使ってphpからmysqlに接続する方法を書きます。
よく考えたらPDOクラスの方が汎用性高いのでこっちの記事を先に書くべきだったかもですね。
自分用のまとめなので間違いや省略などあります。間違いに関しては指摘していただけると幸いです。
データベースに接続
mysqli_connect関数を使用してデータベースに接続します。また、接続できたらtrue、できなかったらfalseが帰ってきます。
$link = mysqli_connect('host','user','password','DB');
//引数はホストorIPアドレス、ユーザ名、パスワード、データベース名
接続に失敗した時エラーを出力
なにかしら問題があってエラーが発生した時はmysqli_connect_error関数を使ってエラーを出力します。
if(!$link){
echo "エラー : データベースに接続できませんでした。" . PHP_EOL;
echo mysqli_connect_error() . PHP_EOL;
exit;
}else{
echo "データベースに接続できました。" . PHP_EOL;
}
クエリの実行
クエリの実行にはmysqli_query関数を使用します。
引数は接続時にmysqli_connect関数の返り値を入れた変数です。引数はmysqli_connectの戻り値とsql文が入った変数です。
$result = mysqli_query($link, $sql);
返り値がないもの(insert)などは成功するとtrue、selectなど返り値があるものは$resultに結果が格納されます。
もし、失敗した場合mysqli_error関数を使うことでエラーログの出力が可能です。引数はmysqli_connectの戻り値です。
echo mysqli_error($link);
クエリを実行して得た結果を出力していく
実行結果は連想配列として保存され、それをwhileで回しながら出力していくイメージです。
foreach文ばっか使っていましたから少し違和感ですよね。
$sql = 'select * from table';
$result = mysqli_query($link, $sql);
while ($value = mysqli_fetch_assoc($result)) {
var_export($value);
}
array (
'id' => '1',
'value' => '5',
)array (
'id' => '2',
'value' => '7',
)
処理が終わったらメモリの解放を!
前述した通り結果はメモリに保存されます。メモリの圧迫を避けるためにも取得した結果の使用が終わったらメモリの解放をしていきます。
mysqli_free_result($result);
切断
切断する時はmysqli_close関数を使用します。
mysqli_close($link);
まとめ
まだまだなので追記していこうと思います。