1

エラーなしで通過するように見える単純な挿入ページがありますが、データベースには表示されません。これに関する 30 件以上の差分投稿を読みましたが、何が問題なのかわかりません。表示ページがすべての結果を問題なくプルするため、dbcon.php が機能することはわかっています。

<?php
ob_start();
include('dbcon.php');

if (isset($_POST['submit'])){

$Ph1=preg_replace('/[^0-9]/', '', $_POST["ph1"]);
$Ph2=preg_replace('/[^0-9]/', '', $_POST["ph2"]);
$Name=mysql_real_escape_string($_POST['name']);
$Email=mysql_real_escape_string($_POST['email']);
$Group=$_POST['group'];

mysql_query("insert into reps (ph1,ph2,name,email,group)
        values("$Ph1","$Ph2","$Name","$Email","$Group")");
        header('location:index.php');
}
ob_flush();
?>
4

1 に答える 1

2

GROUP予約済みのキーワードです。バッククォートで囲む必要があります。

insert into reps (ph1,ph2,name,email,`group`)

もう 1 つの問題は、値を囲む `二重引用符の使用です。

mysql_query("INSERT INTO reps (ph1,ph2,name,email,`group`) VALUES ('$Ph1','$Ph2','$Name','$Email','$Group')");

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-08T02:45:36.760 に答える