この記事の関数は下記の記事から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