我使用一个while来输出数据库查询结果
getInfo是一个类似小偷程序的function
传入code字段的值,偷取另一网站相对应的内容
然后通过一个数组返回结果
while ($row = mysql_fetch_array($query)) {
echo $row[name] . "<br>";
echo $row[sex] . "<br>";
//以此类推
print_r(getInfo($row[code]));
}
不知道为什么 假如有10个用户 只有第一个能得到返回的数组
其他的9个,无法返回偷取的值
看结果,getInfo函数的确已被执行,因为函数可以输出URL,但是缺少变量function getInfo($value) {
$url="http://www.xxx.com/index.php?code=$value";
}如果输出$url 那index.php?code=后面为空,但网址可以被输出请赐教原因,谢谢大家
getInfo是一个类似小偷程序的function
传入code字段的值,偷取另一网站相对应的内容
然后通过一个数组返回结果
while ($row = mysql_fetch_array($query)) {
echo $row[name] . "<br>";
echo $row[sex] . "<br>";
//以此类推
print_r(getInfo($row[code]));
}
不知道为什么 假如有10个用户 只有第一个能得到返回的数组
其他的9个,无法返回偷取的值
看结果,getInfo函数的确已被执行,因为函数可以输出URL,但是缺少变量function getInfo($value) {
$url="http://www.xxx.com/index.php?code=$value";
}如果输出$url 那index.php?code=后面为空,但网址可以被输出请赐教原因,谢谢大家
数据库应该没有什么问题
如果我在函数前面加上echo $row[code];
程序可以正常输出值的
谢谢
是的,我上面只是写了部分function的代码
返回数组的没有写
假如循环10次,这个function的确被执行了10次
但是只是第一次获得了结果,其他九次返回了值,但是没有结果
如果循环11次,还是只有第一个才能返回结果
这个很奇怪,谢谢
你的意思是:
你在A处输出正确,而在B处输出不对,
那很显然从你贴出的代码看是不可能的,那么你肯定有其它未贴出的代码,
如果你不贴出全部代码,大家怎么可能回答出你的问题?
while ($row = mysql_fetch_array($query)) {
echo $row[name] . "<br>";
echo $row[sex] . "<br>";
//以此类推
echo $row[code]; /// A
print_r(getInfo($row[code]));
}
function getInfo($value) {
$url="http://www.xxx.com/index.php?code=$value";
echo $url; ///B
}
function getInfo($value) {
$url = “http://www.baidu.com/s?wd=”;
$url = $url . $value;
$fp = @fopen($url, "r") or die("Timeout");
$fcontents = file_get_contents($url);
eregi("<h1>(.*)<span>((.*))</span></h1>", $fcontents, $regs);
$result[0] = trim($regs[1]);
eregi("<h1>(.*)<span>((.*))</span></h1>", $fcontents, $regs);
$regs[2] = str_replace("(","",$regs[2]);
$regs[2] = str_replace(")","",$regs[2]);
$result[1] = trim($regs[2]);
$expre = "<tr><th scope=\"row\" width=\"48%\">Last Trade:</th><td class=\"yfnc_tabledata1\"><big><b><span id=\"yfs_l10_(.*)\">(.*)</span></b></big></td></tr>";
eregi($expre, $fcontents, $regs);
$result[2] = trim($regs[2]);
$expre = "<tr><th scope=\"row\" width=\"48%\">Change:</th><td class=\"yfnc_tabledata1\"><span id=\"yfs_c10_(.*)\" class=\"yfi_quote_price\"><img width=\"10\" height=\"14\" border=\"0\" src=\"(.*)\" alt=\"(.*)\"> <b class=\" (.*) \">(.*)</b></span> <span id=\"yfs_p20_(.*)\" class=\"yfi_quote_price\"><b class=\" (.*) \"> (.*)</b></span></td></tr>";
eregi($expre, $fcontents, $regs);
$regs[8] = str_replace("(","",$regs[8]);
$regs[8] = str_replace(")","",$regs[8]);
$result[3] = trim($regs[3]);
$result[4] = trim($regs[5]);
$result[5] = trim($regs[8]);
$expre = "<tr><th scope=\"row\" width=\"48%\">Volume:</th><td class=\"yfnc_tabledata1\"><span id=\"yfs_v00_(.*)\">(.*)</span></td></tr><tr><th scope=\"row\" width=\"48%\">Avg Vol <span class=\"small\">";
eregi($expre, $fcontents, $regs);
$result[6] = trim($regs[2]); $result[7] = $url; // A重点
fclose($fp);
return $result;
} //function ends $query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
echo $row[name];
echo $row[sex]; //全部输出正常,Sql语句执行无误,获取了数据库里的内容
echo $s = $row[code]; //输出正常,保证getInfo得到的值不为空
$result = getInfo($s); //传入值并执行函数
print_r($result); // B重点:打印数组的返回值
}
最重要的一点!无论通过SQL获取的结果有多少条,只有第一条能通过getInfo函数返回想要的数组,也就是说,只有首条记录能在B重点出输出想要的值,后面的记录全部无法得到值。
通过在A处赋值,第一条记录输出结果为
http://www.baidu.com/s?wd=91919191
后面记录的输出
http://www.baidu.com/s?wd=
也就是说,所有的记录都执行了function getInfo
但是只有第一条成功传入了值
从这一点来看,并不是function的问题 因为第一条记录获取了结果
如果在SQL中加入order by 使其倒序输出
原本在一位可以得到输出数组的记录排到了最后一位,这时它也无法输出值
谢谢各位老师指教