6回目。前回に引き続きPHPからMySQLを利用する。今回はいよいよINSERT(書き込み)。これで、読み込みと書き込みができた。だいぶ進んだ気分。
今回は珍しく事前に(実質的に)予習復習をしていたので、推測→ちょっと違う書き方→驚きと共に理解という流れになって、良く理解できたし、楽しかった。
一番興味深かったのは変数展開の部分。
[sourcecode language=”php” firstline=”57″]
echo "新しいID = $id";//"’は変数展開する
echo ‘新しいID = $id’;//’は変数展開しない
[/sourcecode]
ASではダブルクオーテーションとシングルクオーテーションは同じ意味なので、面白い。
特に次のsql文全体がダブルクオーテーションで囲まれている所、
[sourcecode language=”php” firstline=”47″]
$sql = "INSERT INTO sample
.t_title
(title_id
, title
, delete_flag
, insert_time
, update_time
) VALUES (NULL, ‘$title’, ‘0’, ”, CURRENT_TIMESTAMP);";
[/sourcecode]
シングルクオーテーションで囲まれた「’$title’」が変数展開するのは「えー大丈夫なの??」とか思ってしまった(たぶん理解が追いついてない)。
また$conから値が取れたのは、なるほど、と思った。なんとなく、なにかしらやり方があるとは思ってたけど。
[sourcecode language=”php” firstline=”55″]
//新しく作成されたタイトルのID(AUTO INCREMENT)
$id = mysql_insert_id($con);
[/sourcecode]
ともかく、面白くなって来た。
また、復習がてら何か作ろうかなと。
[sourcecode language=”html”]
<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>
[/sourcecode]
[sourcecode language=”php”]
<?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
*/
?>
[/sourcecode]