我编写了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问题的想法。
我的假设是:
这些都有意义吗?还有其他想法吗?
这里的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));
}
同样,有时候它会起作用,有时它也不会......
答案 0 :(得分:1)
您的代码不会清理查询的输入或通过参数传递它。这意味着如果传递给INSERT语句的数据具有将被解释为SQL语法的字符(例如撇号),则会弄乱您的语句。 它还有可能破坏或无意中访问您的数据。换句话说,它是一种等待发生的SQL注入攻击。
使用准备好的陈述来防范这种情况。 http://php.net/manual/en/mysqli.prepare.php