フォームからデータベースにデータを保存する php ハンドラーに投稿するフォームがあります。保存機能は問題ないと思います。$_POST
フォームデータのマージに問題があると思います。SQL テーブルを表示すると、データはそこにありますが、すべての値が 1 つの列に表示されるため、変数はフォームから正しく渡されます。
これは私のコードです:
$name = isset($_POST['name']) ? $_POST['name'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$com_dis = isset($_POST['comment']) ? $_POST['comment'] : '';
$id = isset($_POST['id']) ? $_POST['id'] : '';
$lowercase = strtolower($email);
$image = md5( $lowercase );
try{
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = 'INSERT INTO comments ( com_name, com_email, com_dis, post_id_fk ) VALUES ( :name, :email, :com_dis, :id )';
$st = $conn->prepare ( $sql );
$st->bindValue( ":name", $name, PDO::PARAM_STR );
$st->bindValue( ":email", $email, PDO::PARAM_STR );
$st->bindValue( ":com_dis", $com_dis, PDO::PARAM_STR );
$st->bindValue( ":id", $id, PDO::PARAM_INT );
$st->execute();
$conn = null;
}catch(PDOException $e ){
echo "QUERY FAILED" . $e->getMessage();
};
すべての変数に使用する$id = $_POST['id']
と、不明なインデックス エラーがスローされます。印刷$_POST
すると、配列が名前と呼ばれる配列が表示され、内容はテーブルに格納されているのと同じデータである残りの変数だけです。
データを正しく保存するか$_POST
、変数のマージを停止するにはどうすればよいですか? 正しい列に保存しますか?
これは私のフォームです:
<form action="#" method="post">
<input type="hidden" name="id" id="id" value="<?php echo $id; ?>"/><br />
<span class="titles">Name</span><span class="star">*</span><br /><input type="text" name="name" id="name"/><br />
<span class="titles">Email</span><span class="star">*</span><br /><input type="text" name="email" id="email"/><br />
Comment<br /><textarea name="comment" id="comment"></textarea><br />
<input type="submit" class="submit" value=" Submit Comment " />
</form>
フォームは AJAX 経由で渡されます。
$(function() {
$(".submit").click(function() {
name = $("#name").val();
var email = $("#email").val();
var comment = $("#comment").val();
var id = $("#id").val();
var dataString = 'name='+ name + 'email=' + email + 'comment=' + comment + 'id=' + id;
if(name=='' || email=='' || comment==''){
alert('Please Give Valid Details');
}
else{
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" align="absmiddle"> <span class="loading">Loading Comment...</span>');
$.ajax({
type: "POST",
url: "commentajax.php",
data: dataString,
cache: false,
success: function(html){
$("ol#update").append(html);
$("ol#update li:last").fadeIn("slow");
document.getElementById('email').value='';
document.getElementById('name').value='';
document.getElementById('comment').value='';
$("#name").focus();
$("#flash").hide();
}
});
}
return false;
});