0

我收到以下错误:错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“.98.229)”附近使用正确的语法

在我的 PHP 代码上,如下所示:

<?php
$con = mysql_connect("****", "****", "****");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("****", $con);
$ip=$_SERVER['REMOTE_ADDR'];

$sql="INSERT INTO users (fname, lname, email, password, ip)
VALUES
('$_POST[fname]', '$_POST[lname]', '$_POST[email]', '$_POST[password]', $ip)";

if (!mysql_query($sql,$con))
  {
die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

有什么建议吗?:)

4

3 回答 3

3

$ip应该是'$ip'把它变成一个字符串。

我敢肯定,我不会是最后一个对您说您应该使用带有参数化输入的mysqliPDO的人。允许用户输入成为查询字符串的一部分是一个巨大的安全禁忌。

于 2013-02-06T21:57:30.070 回答
1

您应该真正使用 PDO 并在执行操作之前检查您的 POST。您完全容易受到 SQL 注入的攻击。

PDO 准备好的语句是否足以防止 SQL 注入?

于 2013-02-06T22:00:47.293 回答
0

IP架构中的列是什么类型的字段?我想它需要像您声明中的其他字符串一样被引用。

你熟悉SQL 注入PDO吗?

此外,您可能想对如何在数据库中最好地存储 IP 地址进行一些研究。

于 2013-02-06T21:58:57.723 回答