Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql插入不工作数据库连接正在工作_Php_Mysql_Sql_Insert - Fatal编程技术网

php mysql插入不工作数据库连接正在工作

php mysql插入不工作数据库连接正在工作,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我有一个简单的插入页面,看起来没有任何错误,但在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]/

我有一个简单的插入页面,看起来没有任何错误,但在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();
?>

是保留关键字。它必须用背面记号圈起来

insert into reps (ph1,ph2,name,email,`group`)
另一个问题是在值周围使用`双引号'

mysql_query("INSERT INTO reps (ph1,ph2,name,email,`group`) VALUES ('$Ph1','$Ph2','$Name','$Email','$Group')");
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号

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

若您知道mysql会告诉您这个问题,那个么您不会收到任何错误,因为您并没有检查错误。我完全并没有想到保留关键字列表。非常感谢。我不担心SQL注入,因为它将位于密码保护的目录中,只供一两个人使用,但感谢您提供参考链接。是的,我是新手,感谢您就正确的过程向我提供建议。