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."%";
}
}
}