我有从互联网下载rss feed并将其存储在Microsoft SQL数据库中的脚本。 它工作得很好,我可以下载RSS源并将其存储在MSSQL数据库中。
但是我收到错误会执行查询:
PHP Parse错误:语法错误,第37行的C:\ phptest \ test7.php中的意外'$ item'(T_VARIABLE)
此错误查询应该检查数据库中的重复提要,但它不起作用。
php脚本
<?php
try {
$con = new PDO("sqlsrv:Server=hadi-tosh;Database=rssfeed", "rssuser", "rssuser");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
$url = "http://www.albaldnews.com/rss.php?cat=24";
$rss = simplexml_load_file($url);
if($rss)
{
$items = $rss->channel->item;
foreach($items as $item)
{
$source = "اخبارالبلد";
$title = $item->title;
$link = $item->link;
$published_on = $item->pubDate;
$description = $item->description;
$category = $item->category;
$guid = $item->guid;
$enclosure = $item->enclosure[0]['url'];
$img2 = $item->enclosure[0]['url'];
$ch = curl_init ($enclosure);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);
$img = "$rawdata";
$query = $con->prepare('SELECT * from [feedtable] where title = '$item->title' AND link = '$item->link' AND published_on = '$item->pubDate' AND description = '$item->description' AND category = '$item->category' AND image = '$img' AND imagelink = '$img2' AND source = '$source'');
$query->execute();
$num_rows = $query->fetchColumn();
if($num_rows == 0)
{
$stmt = $con->prepare('insert into [feedtable] (title,link,pubdata,description,category,image,imagelink,source) values (:title,:link,:pubdata,:description,:category,:image,:imagelink,:source)');
$stmt->bindParam(':title',$item->title);
$stmt->bindParam(':link',$item->link);
$stmt->bindParam(':pubdata',$item->pubDate);
$stmt->bindParam(':description',$item->description);
$stmt->bindParam(':category',$item->category);
$stmt->bindParam(':image', $img, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);
$stmt->bindParam(':imagelink',$img2);
$stmt->bindParam(':source', $source );
$stmt->execute();
echo "albaldnews feeds added\n";
}
else
{
echo "albaldnews duplicate entry\n";
}
}
}
}
catch (PDOException $e) {
exit("Connection failed: " . $e->getMessage());
}
?>
答案 0 :(得分:0)
您没有正确连接查询。
您需要在.
行的每个引号后添加$query = $con->prepare
。您还需要在SQL Server的每个变量周围添加转义'
,以便能够正确读取您的值。
例如:
SELECT * from [feedtable] where title = \'' . $item->title . '\' AND link = \''. $item->link. '\' AND ...
依此类推,等等其余部分。