PHPでのMySQLデータベース利用

データベース接続

//セッティング
$mysql_server = "localhost:3306";
$mysql_usr = 'ユーザ名';
$mysql_passwd = "パスワード";
$db_name = "データベース名";

//接続
$dbid = mysql_connect( $mysql_server, $mysql_usr, $mysql_passwd ) or die('Could not connect: '.mysql_error());
mysql_query("SET NAMES utf8",$dbid);
mysql_select_db( $db_name );

エスケープして挿入

$sql = <<<SQL
INSERT INTO TABLE (
 NUMBER,
 NAME,
 PRICE,
 REGIST_DATE
)
VALUES (
 %d,
 "%s",
 %d,
 NOW()
);
SQL;
$escaped_sql = sprintf($sql,
 mysql_real_escape_string($number, $dbid),
 mysql_real_escape_string($name, $dbid),
 mysql_real_escape_string($price, $dbid),
);
mysql_query($escaped_sql);

※「$dbid」は、データベース接続の際の返り値
※「"%s"」「%d」に、sprintf()内の値が入る
※「"%s"」は文字列、「%d」は数値
※「%d」に「01」など0先頭の文字列は入らない。「0」は入る

エスケープ関連の関数

mysql_real_escape_string()

htmlspecialchars()       //特殊文字をHTMLエンティティに変換する
htmlspecialchars_decode  //特殊なHTMLエンティティを文字に戻す。htmlspecialchars()の逆

htmlentities()        //すべてのHTMLエンティティ文字を変換する
html_entity_decode()  //すべてのHTMLエンティティを適切な文字に変換。htmlentities()の逆

get_html_translation_table()  //htmlspecialchars()およびhtmlentities()で使用される変換テーブルを返す

addslashes()    //文字列をスラッシュでクォートする
stripslashes()  //クォートされた文字列のクォート部分を取り除く addslashes()の逆

strip_tags()  //HTMLおよびPHPタグを取り除く

nl2br()  //改行文字の前にHTMLの改行タグを挿入する

内部的な結果ポインタをリセット

mysql_data_seek($result,0);

※再度「while ($row = mysql_fetch_assoc($result))」で回せるようになる

結果保持用メモリを開放

mysql_free_result($result);

データベース接続を解除

mysql_close($db);

すべてのデータベーステーブルの最適化

$sql = "SHOW TABLES";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
 $sql2 = "OPTIMIZE TABLE $row[0]";
 mysql_query($sql2);
}
mysql_free_result($result);

すべてのデータベーステーブルの分析

//すべてのテーブルを分析
$sql = "SHOW TABLES";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
 $sql2 = "ANALYZE TABLE $row[0]";
 mysql_query($sql2);
}
mysql_free_result($result);

複合ワード検索SQLを作成

if (strlen($word) > 0) {
    $word = mb_convert_kana($word,"s","UTF-8");
    $word = preg_replace("/(\s)+/", ' ', $word);
    $word = preg_replace("/^(\s)/", '',  $word);
    $word = preg_replace("/(\s)$/", '',  $word);
    if ($word != '') {
        $arrWord = explode(' ', $word);
        foreach ($arrWord as $value) {
            $where .= " AND column LIKE ? ";
            $placeholder = "%".$value."%";
        }
    }
}