我正在使用php / html进行表单,我想使用
将详细信息插入到我的数据库中$sql = "INSERT INTO membre (Name, Age) VALUES ('$Name', '$Age')";
我认为我的SQL代码中缺少一些东西。怎么解决?
答案 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