PHP 『 超 』 初心者勉強会(PHPでMySQL) 6回目に参加して来ました。
6回目。前回に引き続きPHPからMySQLを利用する。今回はいよいよINSERT(書き込み)。これで、読み込みと書き込みができた。だいぶ進んだ気分。
今回は珍しく事前に(実質的に)予習復習をしていたので、推測→ちょっと違う書き方→驚きと共に理解という流れになって、良く理解できたし、楽しかった。
一番興味深かったのは変数展開の部分。
echo "新しいID = $id";//"'は変数展開する echo '新しいID = $id';//’は変数展開しない
ASではダブルクオーテーションとシングルクオーテーションは同じ意味なので、面白い。
特に次のsql文全体がダブルクオーテーションで囲まれている所、
$sql = "INSERT INTO `sample`.`t_title` (`title_id`, `title`, `delete_flag`, `insert_time`, `update_time`) VALUES (NULL, '$title', '0', '', CURRENT_TIMESTAMP);";
シングルクオーテーションで囲まれた「’$title’」が変数展開するのは「えー大丈夫なの??」とか思ってしまった(たぶん理解が追いついてない)。
また$conから値が取れたのは、なるほど、と思った。なんとなく、なにかしらやり方があるとは思ってたけど。
//新しく作成されたタイトルのID(AUTO INCREMENT) $id = mysql_insert_id($con);
ともかく、面白くなって来た。
また、復習がてら何か作ろうかなと。
<html> <head> <title>新規タイトル作成</title> </head> <body> <h1>新規タイトル作成</h1> <form method="post" action="title_insert_1.php"> タイトル:<br/> <input type="text" name="title" value="" style="width:200px;" /><br/> <input type="submit" name="button" value="送信" /><br/> </form> </body> </html>
<?php
$host = 'localhost';
$user = 'sample';
$pass = '123456';
$db = 'sample';
// MySQLに接続する
if($con = mysql_connect($host,$user,$pass)){
echo 'OK<br/>';
}else{
echo 'NG<br/>';
exit;
}
// データベースの選択
if( mysql_select_db( $db, $con ) ){
echo 'OK<br/>';
}else{
echo mysql_error($con);
exit;
}
// 文字コードの設定
if( mysql_query('SET NAMES utf8',$con) ){ // Shift JIS = sjis, EUC JP = ujis
echo 'OK<br/>';
}else{
echo mysql_error($con);
exit;
}
//送信内容
$title = $_POST['title'];
//getの場合は
//$title = $_GET['title'];
if($title == ''){//if(empty($title)),if(!$title),if(strlen($title)<1)
//true
echo 'タイトルが空です';
exit;//強制終了。以降の行は無視される。
}else{
//false
}
// SQLの送信
// t_titleのテーブルを取得
$sql = "INSERT INTO `sample`.`t_title` (`title_id`, `title`, `delete_flag`, `insert_time`, `update_time`) VALUES (NULL, '$title', '0', '', CURRENT_TIMESTAMP);";
//resはリソース。連想配列とかではなくて、リソース型
$res = mysql_query($sql, $con);
if(mysql_errno($con)){
echo mysql_error($con);
echo $sql;
}
//新しく作成されたタイトルのID(AUTO INCREMENT)
$id = mysql_insert_id($con);
echo "新しいID = $id";//"'は変数展開する
echo '新しいID = $id';//’は変数展開しない
//var_dump($_POST);
//echo $_POST['title'];
/*
S-JISは一文字2Byte
UTF-8は一文字3Byte
*/
?>





