【问题标题】:Invalid query, syntax to use near 'INET_ATON ('IP')'查询无效,在 'INET_ATON ('IP')' 附近使用的语法
【发布时间】:2013-11-05 19:45:37
【问题描述】:

我收到此错误:

无效查询:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 1 行的 'INET_ATON('188.92.x.x')' 附近使用

尝试在数据库中插入 IP 地址时。列类型为:

'LastIP int(10) unsigned NOT NULL,'.

执行查询的函数是:

function onNewUser($ip, $hostname, $con)
{
    $query =    "INSERT INTO tableMachine (LastIP, LastHostName) VALUES ".
                "INET_ATON('".mysql_real_escape_string($ip, $con)."'), ".
                "'".mysql_real_escape_string($hostname, $con)."'";

    $result= mysql_query($query, $con);
    if (!$result) {
        die('Invalid query: ' . mysql_error());


    }
    }

我用参数调用这个函数:

$ip = $_SERVER['REMOTE_ADDR'];

$hostname = @gethostbyaddr($ip);

onNewUser($ip, $hostname, $con);

你们怎么了?

【问题讨论】:

  • 阅读stackoverflow.com/a/60496/2864740 - 这将使代码更安全、更健壮、并且更容易查看实际 SQL 的样子。
  • mysql_* 函数在 PHP 5.5 中已弃用。不建议编写新代码,因为它会阻止您将来升级。相反,请使用 MySQLi_*PDO

标签: php mysql


【解决方案1】:

如果我没记错的话,你的值列表应该封装在括号内

【讨论】:

    【解决方案2】:

    你应该试试这个:

    $query =    "INSERT INTO tableMachine (LastIP, LastHostName) VALUES (".
                "INET_ATON('".mysql_real_escape_string($ip, $con)."'), ".
                "'".mysql_real_escape_string($hostname, $con)."')";
    

    我只是为VALUES(...)添加括号

    另外,正如@Shamil 所说,函数mysql_* 已被弃用。您应该使用mysqli_*This link 应该可以帮助您使用mysqli_* 功能。

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 2016-02-01
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多