我在过去几天一直在研究这个脚本,似乎无法找到将数据插入MySQL的方法。我是PHP / MYSQL的初学者,之前只编写了几个简单的脚本。我能够回显出已删除的数据并且没有得到错误消息,但是当我检查phpmyadmin时查询不起作用(结果没有输入到数据库中)。
以下是我一直在处理的代码
require ("mysqli_connect.php");
include('../simple_html_dom.php');
ini_set('user_agent',
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
// get DOM from URL or file
$html = file_get_html('http://www.asos.com/Women/Jeans/Cat/pgecategory.aspx?cid=3630&via=lhn');
// find all images
foreach($html->find('#items') as $a)
echo $a->innertext .'<br>';
foreach($html->find('span.price') as $p)
echo $p->innertext .',';
$q = "INSERT INTO jeans (`image`, `price`) VALUES ('$a', '$p')";
$r = @mysqli_query ($dbc, $q) or die ("Update query failed : " . mysql_error());; //Run the Query.
答案 0 :(得分:2)
在您的示例代码中,$ a和$ p是对象,请尝试以下方法:
$a = '';
foreach($html->find('#items') as $item) {
$a.= $item->innertext .'<br>';
}
$p = '';
foreach($html->find('span.price') as $price) {
$p.= $price->innertext.',';
}
接下来,从@mysqli_query中删除@,尽量不要使用它,尝试正确地捕获/处理错误。
接下来,请花几分钟时间研究参数化的查询和PDO,不要接受未知的输入(不要再来自第三方)并将它们直接注入到你的SQL中:
$q = "INSERT INTO jeans (`image`, `price`) VALUES ('$a', '$p')";
即:不要那样做^
最后,您可能希望验证get的响应。
希望有所帮助!
答案 1 :(得分:1)
您通过在mysqli_query
尝试更改此内容:
$q = "INSERT INTO jeans ('image', 'price') VALUES ('$a', '$p')";
mysqli_query ($dbc, $q) or die ("Update query failed : " . mysql_error());; //Run the Query.
答案 2 :(得分:0)
我想我知道出了什么问题。
如果您只是使用
echo file_get_contents("http://www.asos.com/Women/Jeans/Cat/pgecategory.aspx?cid=3630");
(或者只是asos.com,没关系),你会发现你总会回来:
抱歉,我们找不到该页面或出错的地方......
回去或尝试:
女性男性家庭服务台
因为您指定的元素都不在此页面上,所以您的代码将不会返回任何内容。
我的猜测是asos.com阻止从他们的网站上抓取。
答案 3 :(得分:0)
请记住使用mysql_real_escape_string函数以避免保存内容的麻烦。示例如下。
$query2 = sprintf("INSERT INTO jeans(image, price)
VALUES ('%s','%s')",mysql_real_escape_string($a),
mysql_real_escape_string($p))
mysql_query($query2) or die(mysql_error()."<br />".$query2);