Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL和PHP问题_Php_Mysql_Sql - Fatal编程技术网

SQL和PHP问题

SQL和PHP问题,php,mysql,sql,Php,Mysql,Sql,这个查询有什么问题 $query3 = "INSERT INTO Users ('Token','Long','Lat') VALUES ('".$token."','".$lon1."','".$lat."')"; 在字段名周围使用单引号。这在我所知道的任何SQL变体中都无效。要么去掉它们,要么根据您的SQL风格以正确的方式引用字段名 您的代码可能存在SQL注入漏洞,除非您遗漏了转义的代码$token等 您不应该

这个查询有什么问题

$query3 = "INSERT INTO Users 
             ('Token','Long','Lat') 
           VALUES 
             ('".$token."','".$lon1."','".$lat."')";
  • 在字段名周围使用单引号。这在我所知道的任何SQL变体中都无效。要么去掉它们,要么根据您的SQL风格以正确的方式引用字段名
  • 您的代码可能存在SQL注入漏洞,除非您遗漏了转义的代码
    $token
  • 您不应该像那样将值放入SQL字符串中。这不是20世纪90年代——我们现在已经参数化了查询
  • mysql\uu
    函数使得正确执行查询有点困难。切换到mysqli或PDO
  • Long
    是保留字,保留字需要用反勾括起来

    $query3 = "INSERT INTO Users 
                 (`Token`,`Long`,`Lat`) 
               VALUES 
                 ('".$token."','".$lon1."','".$lat."')";
    

    你对此有几个问题

  • 列名应该是倒勾转义的,而不是带引号的(在MySQL中也是LONG数据类型,因此它是保留的,必须是倒勾转义的)
  • 如果不转义这些参数,则会出现SQL注入问题
  • 如果mysql\u error()不起作用,您应该向我们提供它的结果
  • 尝试运行以下代码:

    $token   = mysql_real_escape_string($token);
    $lon1    = mysql_real_escape_string($lon1);
    $lat     = mysql_real_escape_string($lat);
    
    $query3  = "INSERT INTO `Users` (`Token`, `Long`, `Lat`) 
               VALUES ('{$token}', '{$lon1}', '{$lat}')";
    $result3 = mysql_query($query3) or die("Query Error: " . mysql_error());
    

    如果仍然不起作用,请向我们提供生成的错误消息

    您是否也使用mysql_query()执行它?请给我们完整的查询。我们怎么知道$token、$lon1和$lat是什么?我不知道。这个查询有什么问题?i、 当你使用它时会发生什么?是的$result3=mysql\u查询($query3);这看起来像是一个SQL问题,你能提供给用户DB模式吗?@Tom:我的答案中已经显示了这一点,但没有任何文字,希望你能看到这一点well@ShaktiSingh我看到了。问这个问题的人看到了吗?@Tom:我希望如果一个没有看到的人会发表评论question@ShaktiSingh当前位置一个人很难问他不知道的事情。他显然对此一无所知,因为他写了这个问题。@Tom:是的,我同意你的看法,有些问题需要更多的解释,即使有些人看得很清楚。嗯,我认为我的答案确实需要传统的解释,比如
    escape input var不在列名上使用引号等等。