mysql上のデータベースにPHPをを介してINSERTを行うと文字列がNULLと表示される
こんにちは。
現在、googlemapを通じて現在地の緯度経度とコメントをデータベース上に送信する機能の開発をしています。
環境はMAMPのlocalhostでPHPのバージョンは7.0.0でデータベースはPDO接続で行なっています。
フロント側はjQueryMobileを使用しています。
緯度経度の数値はデータベースに送信は行えましたが、タイトル通り英数字、かな文字ともNULLとしてmysqlのデータベースに表示されています。
NULLが出てきてしまう理由がよくわかりません。またINSERTをPHPに実装後にtextarea部分を入力をしようとするとテキストエリアが消滅してしまいます(文字は入力されている様子ですがブラウザからでは見えない状態です)この二つの問題に回答していただけるとありがたいです。
HTML(送信フォーム)
<form role="form" id="form" name="form1" method="post" action="sent.php" onSubmit="return cheak_alret()" data-ajax="false">
<div class="ui-field-contain">
<label for="text-title">タイトル</label>
<input type="text" name="place" id="title" value="" />
</div>
<!--経度の情報をajaxに-->
<div class="ui-field-contain">
<label for="text-Latitude">経度</label>
<input type="text" name="Latitude" id="Latitude" />
</div>
<!--緯度の情報をajaxに-->
<div class="ui-field-contain">
<label for="text-Longitude">緯度</label>
<input type="text" name="Longitude" id="Longitude" />
</div>
<div class="ui-field-contain">
<label for="text-comment">コメント</label>
<textarea cols="40" rows="8" name=textarea id="comment"></textarea>
</div>
<div role="main" class="ui-content">
<button type="submit" class="ui-btn" onclick='return confirm("よろしいですか?(現段階では送信されません)");'>確認</button>
</div>
JavaScript(入力チェック)
function cheak_alret(){
if(document.form1.title.value == ""){
alert("タイトルを入力してください")
return false;
}
if(document.form1.Latitude.value == ""){
alert("経度を入力してください")
return false;
}
if(document.form1.Longitude.value == ""){
alert("緯度を入力してください")
return false;
}
if(document.form1.comment.value == ""){
alert("コメントを入力してください")
return false;
}
}
sent.php(PDO)
<?php
$db_user="root";
$db_pass="root";
$db_host="localhost";
$db_name="localmaker";
$db_type="mysql";
$dsn= "$db_type:host=$db_host;
dbname=$db_name;
charset=utf8;";
try{
$pdo=new PDO($dsn, $db_user,$db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $Exception){
die('エラー' .$Exception->getMessage());
}
try{
$pdo->beginTransaction();
$sql ="INSERT INTO marker ( title, Longitude, Latitude, comment)VALUES( :title, :Longitude, :Latitude, :comment)";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(':title',
$_POST['title'], PDO::PARAM_STR);
$stmh->bindValue(':Longitude',
$_POST['Longitude'], PDO::PARAM_INT);
$stmh->bindValue(':Latitude',
$_POST['Latitude'], PDO::PARAM_INT);
$stmh->bindValue(':comment',
$_POST['comment'], PDO::PARAM_STR);
$stmh->execute();
$pdo->commit();
print "データを".$stmh->rowCount()."件挿入しました<br>";
}catch(PDOException $Exception){
$pdo->rollback();
print "エラー:" .$Exception->getMessage();
}
?>
<body>
<div data-role="page" data-add-back-btn="true" data-back-text="戻る">
<div data-role="header">
<h1>DEMO</h1>
</div>
<div role="main" class="ui-content">
<?php
print'場所';
echo $_POST["place"];
?><br />
<?php
print'経度';
echo $_POST["Longitude"];
?><br />
<?php
print'緯度';
echo $_POST["Latitude"];
?><br />
<?php
print'コメント';
echo nl2br ($_POST["textarea"]);
?>
</div>