この記事の関数は下記の記事からclass化を解いて使用しています。
SQLインジェクションに対応!データベース接続クラス
//データベース接続情報の連想配列を作成 $db_info_array = array( "sql"=>"mysql", "host"=>"localhost", "dbname"=>"sample_db", "user"=>"root", "password"=>"", "charset"=>"utf8" );
sample_dbは下記の記事で見本で作成したものです。
PHPMyAdminの立ち上げからDB作成、テーブル作成のやり方【XAMPP】
//データベースに接続 $connect = setDBConnect($db_info_array);
データベースに挿入するサンプル
※日本語を挿入するにはエクリプスの編集->エンコードの設定->その他->UTF-8を選択して保存してください。
$sql = "insert into test (number,string) values(?,?)";
$res = insert($connect,$sql,array(8,"testdato"));
if($res == ""){
echo "NG insert";
}else{
echo "OK insert";
}
データベースからデータをとってくるサンプル
$sql = "select * from test where number = ?";
$array=array(5);
$res_data = select($connect,$sql,$array);
if($res_data == ""){
echo "NG select or NOT data";
}else{
echo "OK select";
print_r($res_data);
}
使っている関数一覧
function setDBConnect($db_info_array){
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES '.$db_info_array['charset'],
PDO::ATTR_PERSISTENT => true,
);
$link = $db_info_array['sql'].':host='.$db_info_array['host'].';dbname='.$db_info_array['dbname'];
$user = $db_info_array['user'];
$password = $db_info_array['password'];
try{
$con = new PDO( $link, $user, $password, $options );
if ($con == null){
throw new PDOException( 'CONNECT LOOSE' );
}
}catch ( PDOException $e ){
print( 'Error:'.$e->getMessage() );
die();
}
return $con;
}
function dbmethod($con,$sql ,$array){
$stm = $con->prepare( $sql );
for( $i = 0; $i < count( $array ); $i++ ){
$stm->bindParam( $i+1 , $array[$i] , PDO::PARAM_STR );
}
$result_data = $stm;
$flag = $stm->execute();
if( ! $flag ){
$result_data = "";
}
$con = NULL;
return $result_data;
}
/*
戻り値が""なら挿入失敗
*/
function insert( $con, $sql , $array ){
return dbmethod($con, $sql , $array );
}
function select($con, $sql ,$array=array()){
$result_data = dbmethod( $con, $sql , $array );
$array = array();
while( $date = $result_data->fetch( PDO::FETCH_ASSOC ) ){
$array[] = $date;//フィールドごと
}
return $array;
}
動作環境一覧
phpMyAdmin::バージョン情報: 4.9.2, 最終安定バージョン: 4.9.4
Apache::バージョン情報: 2.4.41 (Win64)
PHP::バージョン情報: 7.2.26
