現在非推奨のphpコードでコーディングしたプロファイルページがあります。PDO に切り替えて学習を進めています。日付フィールドがデータベースに保存されないというこの問題が発生し続けています。問題を解決する解決策(mysql_real_escape_stringを日付変数に追加する)を見つけましたが、これはPDOではないと言われました。
私のコードは正しいですか?これは、フォーム送信オプションをフォーマットする安全で効果的な方法ですか?
//----------
//--My Submit Statement
//----------
<?php if (isset($_POST['submit'])) {
$user_id = ( $_POST["user_id"] );
$length = ( $_POST["length"] );
$ground = ( $_POST["ground"] );
$date = mysql_real_escape_string( $_POST["date"]);
$query = "INSERT INTO admin (user_id,`length`,`ground`,`date`) VALUES $user_id,$length,$ground,'".mysql_real_escape_string($date)."')";
$q = $pdo->prepare($query);
$q->execute(array('user_id'=>$user_id,':length'=>$length,':ground'=>$ground,':date'=>$date));
}
?>
日付はユーザー指定です。
//----------
//--My Call Statement
//----------
<?php
$query = "SELECT * FROM admin WHERE user_id = '$userid'";
$q = $pdo->query($query);
while ($row = $q->fetch()){
?>
//Edited out beginning of table
<tr>
<td><?php echo $row['date']; ?> </td>
<td><?php echo $row['length']; ?><?php if ($selected == 'metric') { echo "cm"; } else { echo "in"; } ?>
</td>
<td><?php echo $row['ground']; ?><?php if ($selected == 'metric') { echo "cm"; } else { echo "in"; } ?>
//Edited out bottom of table