因此,基本上,我要做的是为查询生成的每一行生成一个URL并访问该URL。有趣的是,它总是只访问第一个生成的URL,而从不访问其他URL。
我做错了什么?请帮帮我。
$query = "SELECT distinct b.productname, b.seller, b.price, b.offerid
from tracker b";
$results = mysqli_query($dbcon, $query);
$rows = array();
$i = 0;
while ($row = mysqli_fetch_assoc($results)) {
$rows[] = $row;
foreach ($rows as $row) {
$url = 'url'.$i;
$$url = 'https://bla.com/tools/tracker.php?productID=' .
$row["productname"] . '&verkoper=' .
$row["seller"] . '&offerid=' .
$row["offerid"] . '&price=' . $row["price"] .
'&productTracken=';
// set URL and other appropriate options
file_get_contents($$url);
$i++;
}
}
如果你简化你正在做的事情,你可能会得到你想要的结果
您所要做的似乎只是触摸一个由表中的数据构建的URL列表
此外,你不需要while循环和foreach循环,这肯定会导致你的问题。
$query = "SELECT distinct b.productname, b.seller, b.price, b.offerid
from tracker b";
$results = $dbcon->query($query);
while ($row = $results->fetch_assoc()) {
$url = 'https://bla.com/tools/tracker.php?productID=' .
$row["productname"] . '&verkoper=' .
$row["seller"] . '&offerid=' .
$row["offerid"] . '&price=' . $row["price"] .
'&productTracken=';
// set URL and other appropriate options
file_get_contents($url);
}
这里发生了一些奇怪的事情。
首先,你的循环:
while ($row = mysqli_fetch_assoc($results)) {
$rows[] = $row;
foreach ($rows as $row) {
每次从数据库中提取一行时,都会将其添加到数组中。然后立即循环该数组中的所有项。如果你每次输出一个行号,你会得到0;则0、1;则0,1,2;等等
其次,您的URL变量:
$url = 'url'.$i;
$$url = 'https://...';
这使用了PHP的一个叫做变量的深奥特性:您可以动态地选择您想要的变量名。这个功能基本上是从不需要的,因为使用数组几乎总是更好的:
$urls[$i] = 'https://...';
不过,在这种情况下,一次只使用一个值,所以您可以使用一个简单的旧变量:
$url = 'https://...';
修复这些问题会给你RiggsFilly的答案中的代码,并且可能会解决你的问题。