联系API,错误只是在某些时候...?

时间:2012-06-28 17:12:47

标签: php mysql sql api error-handling

我编写了PHP代码,它连接到MYSQL以查找信息,将其发送到API,并获得写回新表的响应。

有时它完美无缺,有时则无效。如果它没有给我这个错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , , '', '', '')' at line 1

或者有时它会在新表中写入一个或两个条目,然后在不同的行给我错误。哦,即使我为API选择相同的数据来查找和发送,有时它也会起作用,有时它会赢。(我已经从发送的字符串中删除所有逗号以减少逗号可能出错。)

我想知道这是API或我的代码是否有问题。我无法理解它在某些时候是如何工作的,并且是代码问题的问题,这导致我对可能的API问题的想法。

我的假设是:

  1. 我拥有的API密钥功能有限,因此限制了我的结果。
  2. 需要很长时间才能得到答复,因此超出我的要求。
  3. 这些都有意义吗?还有其他想法吗?

    这里的PHP代码有时会得到回复:

    有时它会回响。但其他时间不然。函数$ request-> API函数php中可用的任何内容。

    我认为抛出错误的sql行与此有关:

    insertRow($db, $new_table, $Merchant, $ips, $scoreBeforeGeo, $geoFactor, $scoreAfterGeo, $category, $overall_protocol, $protocol_name);
    
    function insertRow($db, $new_table, $Merchant, $ips, $scoreBefore, $geoFactor,      $scoreAfter, $category, $overall, $protocol)
    {
       $insert = "INSERT INTO $new_table " . " VALUES('$Merchant', '$ips', $scoreBefore, $geoFactor, $scoreAfter, '$category', '$overall', '$protocol');";
    $q = mysqli_query($db, $insert) || die(mysqli_error($db));
    }
    

    同样,有时候它会起作用,有时它也不会......

1 个答案:

答案 0 :(得分:1)

您的代码不会清理查询的输入或通过参数传递它。这意味着如果传递给INSERT语句的数据具有将被解释为SQL语法的字符(例如撇号),则会弄乱您的语句。 它还有可能破坏或无意中访问您的数据。换句话说,它是一种等待发生的SQL注入攻击。

使用准备好的陈述来防范这种情况。 http://php.net/manual/en/mysqli.prepare.php