PHP 『 超 』 初心者勉強会(PHPでMySQL) 6回目に参加して来ました。

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]