mysql INSERT INTO查询 - 带语法的错误

时间:2015-08-10 02:56:50

标签: php mysql

有人可以帮忙建议我插入语法可能有什么问题吗?         工作,除了我收到空查询消息

?:

2 个答案:

答案 0 :(得分:4)

您的查询,

$sql="INSERT INTO newsletter-subscribers(first_name, last_name, email,    postcode, gender,    yob)VALUES('$first_name','$last_name','$email','$postcode','$gender','$yob')";

您的新查询,

$sql = "INSERT INTO `newsletter-subscribers` (first_name, last_name, email, postcode, gender, yob) VALUES ('$first_name','$last_name','$email','$postcode','$gender','$yob')";

那么,发生了什么变化?

  • 在表名周围添加了刻度。
  • 删除了您不需要查询的空格。

如果没有桌面名称的反对,MySQL会将其视为简报 减去 订阅者。这是错误的,添加刻度以告诉MySQL它是表名。

修改1

这可能是副本&粘贴错误,我不确定,但是......

您的数据库连接也不正确,您没有为其分配任何值,因为您的报价未关闭且智能引号

你的连接,

$db = mysql_connect ("localhost", “db_username, “db_password);

您的新连接

$db = mysql_connect("localhost", "db_username"," db_password");

此外,

$db_select = mysql_select_db(“db_name,$db);

To,

$db_select = mysql_select_db("db_name", $db);

注意报价的差异。

修改2

您的代码很容易SQL injection,即使已弃用,您仍然使用MySQL,您应该使用MySQLiPDO准备好的语句。

更不用说您的$_POST数据在未经过清理的情况下传递给查询,您应该开始使用htmlspecialchars它会使其更好并阻止XSS

答案 1 :(得分:2)

您的表名包含破折号,因此您需要引用它。反引号或反引号字符用于引用MySQL中的符号名称(例如表,列等的名称),因此您需要这样的内容:

INSERT INTO `newsletter-subscribers` (first_name, ...