【问题标题】:php mysql insert not working db connection is working [duplicate]php mysql插入不起作用数据库连接正在工作[重复]
【发布时间】:2013-02-08 02:43:59
【问题描述】:

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

【问题讨论】:

  • 你没有收到错误,因为你没有检查错误,如果你在哪里 mysql 会告诉你问题

标签: php mysql sql insert


【解决方案1】:

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')");

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

【讨论】:

  • 我完全没有想到保留关键字列表。谢谢你。我并不担心 SQL 注入,因为它会在受密码保护的目录中,并且只能由一两个人使用,但感谢您提供的参考链接。
  • 是的,我是新手,感谢您就正确的程序向我提供建议。
猜你喜欢
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2022-01-23
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
相关资源
最近更新 更多