0

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

有时它可以完美运行,有时则不能。如果没有,它会给我这个错误

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. 响应需要很长时间,因此我的请求超时。

这些都有意义吗?还有其他想法吗?

这是有时会返回某些内容的 php 代码:

有时它会回响。但其他时候不会。函数 $request->whatever 在 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));
}

同样,有时它有效,有时它不....

4

1 回答 1

1

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

使用准备好的语句来防止这种情况。 http://php.net/manual/en/mysqli.prepare.php

于 2012-06-28T17:41:01.937 回答