我遇到INSERT语句问题,错误只说:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
根本没用。 到目前为止我尝试过的版本是失败的:
mysql_query("INSET INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')");
[不用说打印时的两个变量显示正确的值] 我也尝试了没有任何关于表名的版本,用'或',真的有一百万种组合,没有任何作用。甚至不是常量或不同的表。它不会插入任何东西。我已经检查了权限(我用root用户登录),并且全部打开了。
我在使用相同服务器(XAMPP 1.7.7)的两台不同机器上尝试了类似的东西,它可以工作。我完全不知所措!它能是什么?
感谢您的时间!
答案 0 :(得分:4)
首先,只需正确输入INSERT
。
使用_GET
之类的东西真正打开了SQL INJECTIONS ...
还可以将良好做法命名为要插入数据的列。这允许您在后面插入额外列并保留应用程序逻辑。
INSERT INTO cos(rowName1, rowName2) VALUES(?, ?)
?
将准备陈述。
答案 1 :(得分:2)
正确:
mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')");
您是否尝试将$ link传递给mysql_query
?
像:
mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')", $link);
编辑:
当然,在将任何内容插入数据库之前,您必须采取一些安全措施,可能是mysql_real_escape_string()
,甚至是准备好的语句。
答案 2 :(得分:0)
你做错了。你为什么不逃避价值观? Php.net文档提供了一些好的和安全的工作示例:
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Perform Query
$result = mysql_query($query);
适应您的代码:
$query = sprintf("INSERT INTO `cos` VALUES (%s, %s);",
mysql_real_escape_string($_GET['prod']),
mysql_real_escape_string($_GET['page']));
$result = mysql_query($query);
请永远逃避你的价值观。并使用INSERT,而不是INSET:)
答案 3 :(得分:0)
首先,您正在使用INSET
使其与INSERT
类似
$pro = mysql_real_escape_string($_GET['prod']);
$page = mysql_real_escape_string($_GET['page']);
mysql_query("INSERT INTO `cos` (column1, column2)
VALUES ('$pro', '$page')" );
您忘记设置列名...
答案 4 :(得分:0)
试试这个:
$prod = $_GET['prod'];
$page = $_GET['page'];
mysql_insert("INSERT INTO 'cos' VALUES('$prod','$page)");
这应该很好:)