POSTやGETで渡されたデータをinsertする際、プリペアドステートメント方式で行うことでエンコードせずにinsertすることが出来る。
<?php $host = "localhost"; $username = "******"; $password = "******"; $dbname = "******"; $mysqli = new mysqli($host, $username, $password, $dbname); $mysqli->set_charset("utf8"); if ($mysqli->connect_error) { error_log($mysqli->connect_error); exit; } /*****************************************************/ $auto_increment = 0; $id = "takahito"; $name = "隆仁"; $exp = "あいうえお\nかきくけこ\nさしすせそ\nたちつてと"; $date = date("Y-m-d H:i:s"); // SQL文の作成 $stmt = $mysqli->prepare("INSERT INTO member ( member_no, member_id, member_name, member_exp, member_date ) VALUES ( ?, ?, ?, ?, ? )"); // パラメータを設定 $stmt->bind_param( 'issss', $auto_increment, $id, $exp, $exp, $date); // プリペアドステートメント実行 $res = $stmt->execute(); // 連番を取得@closeメソッドの前 $auto_increment = $stmt->insert_id; //ステートメントを閉じる $stmt->close(); $query = "SELECT * FROM member"; $result = $mysqli->query($query); $row_cnt = $result->num_rows; if($row_cnt != 0){ $i=0; while ($row = $result->fetch_assoc()) { $i++; $data .= "<p>".$row["member_no"]." ".$row["member_id"]." ".$row["member_name"]." ".$row["member_exp"]." ".$row["member_date"]."</p>"; } } //接続を閉じる $mysqli->close(); ?>
型は大きく4タイプ。整数型(Integer)の「i」、浮動小数点型(Double)の「d」、文字列(String)の「s」、バイナリデータ(Blob)の「b」のいずれかを指定。日付や時間などは文字列の「s」でOK。
コメント