作为我正在开发的网站的一部分,我通过PHP脚本获取了“我是否已经被关注”的所有当前数据泄露。我可以使用网站的API获取所有违规行为,此时有104个。我已经尝试将它们全部插入到数据库表中,但最后2个因某些原因被删除,因此插入的总行数仅为102而不是104。在我的表中没有约束,我检查了mysql错误以及使用SHOW WARNINGS但仍然没有。
有谁知道为什么会这样?之前已经发生了,但这是由于对Varchar限制的约束,所以将其更改为Text,直到现在才解决了这个问题。我正在使用从API引入的JSON数组的计数,并且计数为104,因此它必须是Mysql,这是有问题的。任何人的想法?
$fs = file_get_contents('https://haveibeenpwned.com/api/v2/breaches/', false, $context)
$fs = json_decode($file, true);
$count = count($fs);
for($i=0;$i<$count;$i++) {
$title = mysql_real_escape_string($fs[$i]['Title']);
$name = mysql_real_escape_string($fs[$i]['Name']);
$domain = mysql_real_escape_string($fs[$i]['Domain']);
$breachdate = mysql_real_escape_string($fs[$i]['BreachDate']);
$adddate = mysql_real_escape_string($fs[$i]['AddedDate']);
//$ad_date = explode("T", $adddate);
//$add_date = $ad_date[0];
//$add_time = rtrim($ad_date[1], "Z");
//$add_time = $ad_date[1];
$pwncount = mysql_real_escape_string($fs[$i]['PwnCount']);
$desc = mysql_real_escape_string($fs[$i]['Description']);
//$dc = count($fs[$i]['DataClasses']);
$dca = implode(',',$fs[$i]['DataClasses']);
$isver = mysql_real_escape_string($fs[$i]['IsVerified']);
$issens = mysql_real_escape_string($fs[$i]['IsSensitive']);
$sql = mysql_query("INSERT INTO breaches (Title, Name, Domain, AddedDate, BreachDate, PwnCount, Descript, DataClasses, IsVerified, IsSensitive) VALUES ('$title','$name','$domain','$adddate','$breachdate','$pwncount','$desc','$dca','$isver','$issens')");
//echo '<p>Title: '.$title.'</p>';
//echo '<p>Data Classes: '.$dca.'</p>';
}
$ count的输出与预期的104一样,因为返回的JSON数组中有104个项目。只有102条记录到达数据库表,没有约束。
答案 0 :(得分:0)
在$ sql = mysql_query行
之后向sql添加一些错误检查if (!$sql) {
print_r($fs[$i]);
die('Invalid query: ' . mysql_error());
}