【发布时间】:2014-09-19 10:45:17
【问题描述】:
所以,我有一个来自 thetvdb.com 的 XML Api
资源: 这里有一些 XML API 的摘录:http://pastebin.com/0UgMU6wZ
我的数据库:
我更新数据库的脚本:
include('config.php');
$series = simplexml_load_file("breakingbad.xml");
for ($episode = 0; $episode <= 61; $episode++) {
$title = $series->Episode[$episode]->EpisodeName;
}
$episodenumber = $series->Episode[$episode]->Combined_episodenumber;
$season = $series->Episode[$episode]->Combined_season;
$desc = $series->Episode[$episode]->Overview;
echo "$title... $season...$episodenumber...$desc<br>";
mysql_query("
UPDATE series
SET episodename = '$title', description = '$desc'
WHERE tvshow='breakingbad' AND season = '$season' AND episode = '$episodenumber'");
}
正如您在数据库图片中看到的,它更新了几行,但不是全部。
为了检查 $title、$episodenumber 等是否不为空,我在脚本中做了回显..
一切正常:
但它不会更新所有这些
【问题讨论】:
-
在您打开
<?php标记error_reporting(E_ALL); ini_set('display_errors', 1);后将错误报告添加到文件顶部,看看它是否会产生任何结果。还有or die(mysql_error())到mysql_query()。很有可能,您正在注入 SQL 不同意的字符。你需要逃避你的价值观。 -
强制性MySQL is deprecated 注释,请改用MySQLi 或PDO,还请阅读SQL Injection,因为您的代码对它很敏感。
-
不给我错误,sql是
-
您的值包含 SQL 会抱怨的撇号。仅此一项就会/应该引发错误。 Use
mysqliwith prepared statements,或PDO with prepared statements。这很可能会解决它。