2016-05-09 2 views
-3

Как часть сайта, который я разрабатываю, я получаю все текущие нарушения данных, доступные на «Я был pwned» через PHP-скрипт. Я могу получить все нарушения, используя API-интерфейс сайта, когда в это время есть 104. Я попытался вставить их все в таблицу базы данных, однако последние 2 по какой-то причине отбрасываются, поэтому вложенные вложенные строки составляют всего 102 не 104. не являются ограничениями в моей таблице, и я проверил ошибки mysql, а также использовал SHOW WARNINGS и все еще ничего.Mysql Вставка, отбрасывающая последние две строки

Есть ли у кого-нибудь идеи, почему это происходит? Это произошло раньше, однако это было связано с ограничением на лимит Varchar, поэтому он изменил его на Text и решил проблему до сих пор. Я использую подсчет массива JSON из API, а число равно 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>'; 
      } 

вывод суммы $ считается как ожидалось 104, поскольку в возвращаемом массиве JSON имеется 104 элемента. Только 102 записи достигают таблицы базы данных, без ограничений.

+0

сообщение какой-то код, показать нам, что вы делали до сих пор, то мы сможем помочь вам. – olibiaz

+0

Я помечаю этот вопрос как непонятно, что вы просите, пожалуйста, подумайте над его пересмотром. – dcreight

+0

Неясно? Здесь я был предельно ясен. Я уже сказал, что получаю каждое нарушение от API HIBP, которого есть 104. Выходные данные находятся в JSON. Я беру этот вывод JSON, запустив цикл PHP, а затем вставьте все 104 нарушения в таблицу базы данных в mysql. Как это непонятно? – Dave

ответ

0

добавить некоторые проверки ошибок в SQL после $ SQL = mysql_query линии

if (!$sql) { 
    print_r($fs[$i]); 
    die('Invalid query: ' . mysql_error()); 
} 
+0

Пробовал это уже и ничего не случилось. Ошибок не было, есть просто 2 из 104 в выводе массива JSON, которые просто не попадают в таблицу. Это действительно озадачивает меня, потому что нет способа узнать, почему, если нет предложения SQL, я могу попробовать, кроме SHOW WARNINGS. – Dave

+0

Просто дважды проверьте. Выведите на экран все операторы sql и запустите их вручную. Вы можете запускать их все за один раз, пока вы кладете; в конце каждого заявления. Может быть, что у двух возвращенных результатов есть «в них», что может вызвать проблему. – Brett

+0

Существует только один оператор sql, который является одним из INSERT, и от него никаких ошибок не возникает. Помните, что это делается через PHP-скрипт. Не существует ручного способа сделать это, потому что сначала мне нужно вывести JSON, прежде чем положить его в таблицу. Просто нет причин, по которым он должен отбрасывать 2 строки, и кажется, что нет способа узнать, почему это делается. – Dave

Смежные вопросы