1

我有一个简单的插入页面,似乎没有任何错误,但没有出现在 db 中。我已经阅读了超过 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`)

另一个问题是在值周围使用双引号。

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

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-08T02:45:36.760 回答