解码jsonfile并插入mysql后,我将奇怪的条目结果导入我的数据库。 使用echo-function我得到每个变量$ clanid的正确输出。但是在数据库中我总是得到每个id-entry的数字2147483647。 所有其他变量和条目都没问题。 有人知道这里发生了什么吗?
这是代码:
$con = mysqli_connect("localhost","xxxx","xxxx","xxxxx") or die("Error " . mysqli_error($con));
$url = "http://185.112.249.77:9999/Api/Search?search=&level=1&min=1&max=50&points=48000";
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$in=$data['clanList'];
$results = $data['results'];
$i = 0;
while($i + 1 <= $results){
$clanid = $in[$i]['id'];
$clanname = mysqli_real_escape_string($con,$in[$i]['name']);
echo "Clan ID: $clanid<br />Clan Name: $clanname <br /><br />";
$clanplayerCount = $in[$i]['playerCount'];
$clanwarswon = $in[$i]['warsWon'];
$clanwarslost = $in[$i]['warsLost'];
$clanwarstied = $in[$i]['warsTied'];
$clanLocation = $in[$i]['clanLocation'];
$clanlevel = $in[$i]['level'];
$clanidcorrected = $clanid;
$sql = "INSERT INTO activeclans(id, name, location, playercount, clanlevel, warswon, warslost, warstied)
VALUES('$clanidcorrected', '$clanname', '$clanLocation', '$clanplayerCount', '$clanlevel', '$clanwarswon', '$clanwarslost', '$clanwarstied')";
mysqli_query($con, $sql); //must pass the connection variable before the sql query.
$i++;
}
这是使用php文件后的结果: http://bornhoffer.de/grab-active-clans-search.php
所以...回声结果很好..
但是在数据库中我得到了这些条目:
2147483647 ARAB CHAMPIONS? United Arab Emirates 50 6 43 23 11
2147483647 Emirates United Arab Emirates 50 5 23 18 8
2147483647 Kings Rock International 49 7 106 59 26
2147483647 MEGA EMPIRE International 49 5 50 40 14
2147483647 NORTH 44 International 49 5 70 39 10
2147483647 Quantum's Web U.S. Virgin Islands 50 5 63 23 9
2147483647 ??? ??????? International 50 6 166 19 6
任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:3)
您在数据库中的id列上使用INTEGER
,并且json文件中的数字太大而无法放入其中,您可以将id
列切换为{{1 }}
BIGINT
是mysql中最大的2147483647
值,我相信,链接http://bornhoffer.de/grab-active-clans-search.php中的所有数字都大于此值。