您的SQL语法有错误;查看与MySQL服务器版本对应的手册

时间:2015-07-31 12:07:35

标签: php mysql sql database

我正在使用php / html进行表单,我想使用

将详细信息插入到我的数据库中
$sql = "INSERT INTO membre (Name, Age) VALUES ('$Name', '$Age')"; 

我认为我的SQL代码中缺少一些东西。怎么解决?

4 个答案:

答案 0 :(得分:3)

首先,您使用MySQL reserved word作为列名(Name)。只要在查询的后面标记中包围列名称,就可以这样做:

$sql = "INSERT INTO membre (`Name`, `Age`) VALUES ('$Name', '$Age')"; 

如果您没有preparing您的查询,您很可能会因为其中包含撇号的名称而遇到错误,例如" O' Shaughnessy&# 34 ;.在这种情况下,当不使用预准备语句时,必须确保转义所有输入才能正确处理撇号。这将使上述输入" O \' Shaughnessy"。您可以使用PHP提供的字符串转义函数之一来完成此操作。

如果您没有为查询使用预准备语句或正确清理用户输入的数据,您也会面临SQL Injection Attacks.的风险。

其次,我将在这里讨论并猜测您使用的是较旧的,已弃用的数据库API,mysql_*函数。如果可以的话,你应该stop using mysql_* functions。它们不再被维护,而是officially deprecated。请转而了解prepared statements,并考虑使用PDO,it's really not hard

答案 1 :(得分:0)

首先,当您使用MySQL作为数据库时,您希望将`放在查询中的列周围。这是一种很好的做法,因为你告诉MySQL它不应该被解释为关键字。名称和日期时间等关键字。 所以你的查询应该是这样的:

INSERT INTO membre (`Name`, `Age`) VALUES ('$Name', '$Age')

此外,当你在PHP中使用字符串时,很容易错过'和东西。所以我建议你让你的SQL字符串看起来像这样

$sql = "INSERT INTO membre (Name, Age) VALUES ('".$Name."', '".$Age."')";  

此外,我认为导致您最麻烦的是 membe 拼写错误。我认为你的意思是会员。因此,请将您的查询更改为

$sql = "INSERT INTO member (`Name`, `Age`) VALUES ('".$Name."', '".$Age."')";

它应该有效。

答案 2 :(得分:0)

插入或更新记录时,可以使用转义字符串函数“addslashes”。

$sql = "INSERT INTO membre (`Name`, `Age`) VALUES ('" . addslashes($Name) . "', '$Age')"; 

答案 3 :(得分:-1)

试试这个

Apple