-2

这是我的代码:

$sql="INSERT INTO reg ('name','email','add',c_no,'user_name','pass','mess')
VALUES
('$_POST[name]','$_POST[email]','$_POST[add]','$_POST[number]','$_POST[user]','$_POST[pass]','$_POST[comment]')";

我得到的错误是:

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ''name'、'email'、'add'、c_no、'user_name'、'pass'、'mess' 附近使用的正确语法) VALUES ('admin',第 1 行的“swapni”

4

5 回答 5

1

您不能使用'登录列名称,而是使用反引号 ` 或如果字段名称不是保留关键字则跳过它。

另外,不要将$_POST变量放入 sql 中,而是阅读准备好的语句并始终检查输入数据。

于 2013-10-09T20:06:44.573 回答
1

首先,您的代码容易受到 SQL 注入的影响:如何防止 PHP 中的 SQL 注入?

并且您的字段名称用'封装,如果它们与MySQL保留字不匹配,则它们应该带有`或什么都没有。

第三个 mysql_* 已弃用:为什么我不应该在 PHP 中使用 mysql_* 函数?

第四:"...('$_POST['something']','..."是非常糟糕的做法,我认为它不会在最新的 PHP 中工作,你应该强烈考虑这样写"...('" . $text_to_insert . "','..."

MySQLi 中所有这些问题的解决方案:

$db=new mysqli("server","username","password","database");
$insert_stmt=$db->prepare("INSERT INTO reg (name,email,add,c_no,user_name,pass,mess) VALUES (?,?,?,?,?,?,?)");
$insert_stmt->bindParam("sssisss",$_POST["name"],$_POST["email"],$_POST["add"],$_POST["c_no"],$_POST["user_name"],$_POST["pass"],$_POST["mess"]);
$is_successful=$insert_stmt->execute();
于 2013-10-09T20:07:51.737 回答
0

列名应该用反引号而不是引号封装。

$sql="INSERT INTO reg (`name`,`email`,`add`,`c_no`,`user_name`,`pass`,`mess`)
VALUES ('$_POST[name]','$_POST[email]','$_POST[add]','$_POST[number]','$_POST[user]','$_POST[pass]','    $_POST[comment]')";
于 2013-10-09T20:06:17.937 回答
0

嘿,我正在使用 between 运算符来获取从日期到日期的数据。

查询是....

SELECT客户.*,反馈.*,反馈.idas fid FROM (反馈) LEFT OUTER JOIN客户ON客户.反馈ID=反馈.id WHERE反馈.spa_id= '1' AND反馈.Overall_rating!= '' AND反馈.fb_dateBETWEEN "2014-06-01" and "2015-10-30"

使用此查询我无法获取日期“2015-10-30”的数据

谢谢你。

于 2015-10-30T11:34:12.410 回答
-4
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$add = mysql_real_escape_string($_POST['add']);
$c_no = mysql_real_escape_string($_POST['c_no']);
$user_name = mysql_real_escape_string($_POST['user_name']);
$pass = mysql_real_escape_string($_POST['pass']);
$mess = mysql_real_escape_string($_POST['mess']);

$sql= "INSERT INTO reg (`name`,`email`,`add`,`c_no`,`user_name`,`pass`,`mess`) 
VALUES($name,$email,$add,$c_no,$user_name,$pass,$mess)";
于 2013-10-09T20:08:19.517 回答