PHP
MySQL
mysqli_prepare

PHP mysqlに接続する

More than 1 year has passed since last update.

忘れそうなのでメモ
セキュリティはどうなのか分からないけど、一応動いたので

PHP 7からmysqlは使えなくなり、mysqliもしくはPDOを使うのか、はたまた手続き型オブジェクト指向型初心者には訳が分からないです
※説明するつもりはないです
マジで、検索すれば人それぞれ色々な方法があるし・・・

では本題、ここではmysqliプリペアステートメントを使います

MySQLに接続

<?php
// ホスト名・MySQLユーザ名・パスワード・
データベース名は各自で
 $mysqli = new mysqli('ホスト名', 'MySQLユーザ名', 'パスワード', '
データベース名');

 // エラー発生したら終了
 if ($mysqli->connect_error){
 exit();}

 // 文字コード指定
 $mysqli->set_charset("utf8");

INSERT

 // テーブル名、フィールド名はそれぞれで。フィールドの数は一個のみでも何個でもかません。
 // VALUESのあとにフィールド名と同じ順で入れたい値を書きます。変数は入れられないので、?に置き換えてください。
 // 変数でなければ数字や文字、時間now()はここにそのまま入れられます

 $sql = "INSERT INTO テーブル名 (field1,field2,field3) VALUES (?,1,now())";

 // $sqlに入れなくても構いません。条件があるときには役立ちます
 $stmt = $mysqli->prepare($sql);

 // パラメータに変数を入れます
 // 最初に型指定文字を。次に変数を入れます
 $stmt->bind_param('is', $tid,$screen_name);

 // 最後に実行
 $stmt->execute();

型指定文字についてはこちら
PHP_ mysqli_stmt__bind_param - Manual.html

UPDATE

INSERTと同じようなものです

// フィールドは区切ればいくつでも可。もちろん、WHEREの中に?も可
$stmt = $mysqli->prepare("UPDATE テーブル名 SET field1 = now() WHERE id=?");

// 変数代入
$stmt->bind_param('i', $id);
// 実行
$stmt->execute();

SELECT

$stmt = $mysqli->prepare("SELECT field1,field2,field3 FROM テーブル名 WHERE id=?");
$stmt->bind_param("i", $id);
$stmt->execute();

// 結果をバッファに保存
$stmt->store_result();

// 結果を変数に代入
$stmt->bind_result($field1,$field2,$field3);

// 結果の行数
$row_cnt = intval($stmt->num_rows);

忘れてた

// 最後に使うDB接続を閉じるこれ
$mysqli->close();

以上。

DELETEのとき書いてないけど同じような感じなのかな?まだ使ってないから分からないけど。
他のサイトももっと紹介したいです
あとで追記します。たぶん・・・

参考

PHP_ mysqli__prepare - Manual.html
他にもたくさんの先人の方々の知恵