基本上我有一个调用外部XML文件的php脚本
然后,它将xml文件中的某些数据插入到foreach循环中的mysql数据库中但是当我检查数据库时它是空的
我做错了什么
xml包含以下结构
<jobs>
<job>
<jobref>987654321</jobref>
<title>TITLE HERE</title>
<url>
URL HERE
</url>
<salary>£85 - £105/day benifits</salary>
<location>LOCATION</location>
<description>desc</description>
<category>CAT HERE</category>
</job>
<job>
<jobref>123456789</jobref>
<titleTITLE HERE</title>
<url>
URL HERE
</url>
<salary>£85 - £105/day benifits</salary>
<location>LOCATION</location>
<description>desc</description>
<category>CAT</category>
</job>
</jobs>
以下是PHP代码
<?php
$dbu = 'user';
$dbp = 'pass';
$dbh = 'localhost';
$dbn = 'dbname';
$dbc = mysql_pconnect($dbh,$dbu,$dbp);
// Get XML Feed
$startPage = $_GET['page'];
$perPage = 3000;
$currentRecord = 0;
$xml = simplexml_load_file("urlhere");
$jobs = $xml->xpath("/jobs/job");
foreach ($jobs as $job)
{
mysql_select_db($dbn,$dbc);
$query = mysql_query("INSERT INTO `listings` (`jobref`,`title`,`url`,`salary`,`location`,`description`,`category`) VALUES ('$job->jobref','$job->title','$job->salary','$job->location','$job->description','$job->category')",$dbc);
echo "$job->jobref Added <br>";
}
?>
显示:
120239811 Added
201909016 Added
202482907 Added
当我运行脚本以便解析xml文件但实际上并没有插入数据时
任何帮助都会很棒,因为我在非常紧迫的时间内完成了这项工作 提前致谢
**以下编辑** 下面的新代码
<?php
$startPage = 1;
$perPage = 3000;
$currentRecord = 0;
$xml = simplexml_load_file("urlhere");
$jobs = $xml->xpath("/jobs/job");
mysql_select_db($dbn,$dbc);
foreach ($jobs as $job)
{
$currentRecord += 1;
if($currentRecord > ($startPage * $perPage) && $currentRecord < ($startPage * $perPage + $perPage)){
$query = mysql_query("INSERT IGNORE INTO `listings` (jobref,title,url,salary,location,description,category) VALUES ('$job->jobref','$job->title','$job->url','$job->salary','$job->location','$job->description','$job->category')",$dbc);
if($query){
echo "$job->jobref Added <br>";
} else {
echo mysql_error();
}
}
}
?>
现在只需添加XML文件中的第一个条目
从查询中删除了IGNORE并添加了 ON DUPLICATE KEY UPDATE jobref = $ job-&gt; jobref + 1 还是同样的问题
答案 0 :(得分:0)
你确定xml成功加载了吗? :)但我猜你的样本中xml节点<salary>
有非法的&符号"&"
here the link about it。
但你可以通过一点点破解like this处理它。
我建议您使用mysqli
,因此根据您的xml示例
...
$conn = mysqli_connect($dbh, $dbu, $dbp);
if(!$conn) die('connect fail: '. mysqli_error($conn));
$db = mysqli_select_db($conn, $dbn);
if(!$db) die('db fail: '. mysqli_error($conn));
...
$file = file_get_contents(url_here);
// replace '&' to '&'
$file = str_replace('&', '&', $file);
$xml = simplexml_load_string($file);
$jobs = $xml->xpath("/jobs/job");
foreach ($jobs as $job)
{
...
// just get back those ampersand
$job->salary = str_replace('&', '&', $job->salary);
$s = "INSERT IGNORE INTO `listings` (`jobref`,`title`,`url`,`salary`,`location`,`description`,`category`) VALUES('$job->jobref','$job->title','$job->url','$job->salary','$job->location','$job->description','$job->category')";
$q = mysqli_query($conn, $s);
if(!$q) {
die(mysqli_error($conn));
}else {
echo "$job->jobref Added <br>";
}
}