我有以下代码用于从站点提取数据并将其放入sql数据库。它停在217个条目,但有619个不同的页面。无论我是回显到屏幕还是将其存储在数据库中,它都会失败。没有错误消息。
知道为什么吗?
for($i = 1; $i <= 619; $i++) {
$str = file_get_contents('http://fantasy.mlssoccer.com/web/api/elements/'.$i.'/');
$jsonarray = json_decode($str, true);
//get row data and store in variables
$id = $jsonarray['id'];
$name = addslashes($jsonarray['web_name']);
$team = $jsonarray['team_name'];
$pos = $jsonarray['type_name'];
$flag = $jsonarray['status'];
$cost = ($jsonarray['now_cost']/10);
$ownedby = $jsonarray['selected'];
$balance = $jsonarray['transfers_balance'];
$playerupdate = mysql_query("
INSERT INTO playerprices (id, name, team, pos, flag, cost, ownedby, balance)
VALUES ('$id', '$name', '$team', '$pos', '$flag', '$cost', '$ownedby', '$balance')
ON DUPLICATE KEY UPDATE flag = '$flag', cost = '$cost', ownedby = '$ownedby', balance = '$balance'")
or die (mysql_error());
}
当我只回显第216-220页的变量时,它们都能正常工作,所以我不认为这与这些页面上的数据有关。我看不到特殊字符。
答案 0 :(得分:1)
要摆脱错误(启用display_errors
查看),
致命错误:第5行的C:\ xampp \ htdocs \ stackoverflow \ file_get_contents.php超出了30秒的最长执行时间
尝试将max_execution_time
增加到5-10分钟。
ini_set('max_execution_time', 1000); //300 seconds = 5 minutes
或者通过command line
执行您的脚本。
从命令行运行PHP时,默认设置为 0 。 (来源:
PHP.net
,2012)。
答案 1 :(得分:0)
如果数据中的任何一点有一个或多个单引号,则查询将失败并触发die()
语句。您可以擦除每个变量以删除或替换这些字符,也可以放弃已弃用的mysql_ *函数并使用mySQLi或PDO进行参数化查询。这意味着: