我正在使用curl从我的一个站点获取mysql数据到另一个站点。代码是
$ch = curl_init();
$myurl = "http://domain.com/account.php?siteid=$siteid";
curl_setopt ($ch, CURLOPT_URL, $myurl);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $siteref);
$file_contents = curl_exec($ch);
curl_close($ch);
$data=unserialize($file_contents);
print_r($data);
其他网站account.php
上的代码
$q=mysql_query("SELECT * FROM `".$siteid."`");
$data=mysql_fetch_array($q);
echo serialize($data);
问题是我只从表中获得第一条记录。我希望将表的全部内容发回。我怎么能这样做?
答案 0 :(得分:1)
您需要一个循环来存储每个数组。 mysql_fetch_array一次只返回一行。
while ($data=mysql_fetch_array($q)) {
$dataRows[] = $data;
}
echo serialize($dataRows);
答案 1 :(得分:1)
来自docs:
mysql_fetch_array - 将结果行作为关联数组,数字数组或两者获取
除非你循环来自mysql_query
的结果,否则你只会得到一行。尝试以下方面:
$q = mysql_query("SELECT * FROM `" . $siteid . "`");
$data = array();
while($row = mysql_fetch_array($q)) {
$data[] = $row;
}
但是,再次查看该文档页面,您会发现一个大红色警告,表示您不应再使用mysql扩展名。相反,您应该使用PDO或mysqli构建应用程序。
答案 2 :(得分:0)
这包含在您的account.php
文件中:
(从数据库中提取多条记录,你应该使用循环)
$q=mysql_query("SELECT * FROM `".$siteid."`");
if(mysql_num_rows($q) >= 1) {
while($data = mysql_fetch_array($q)) {
echo serialize($data);
}
} else { echo "there are no rows"; }
同样使用mysql_num_rows
是一种很好的故障安全方法。
自PHP 5.4起,所有mysql_
函数均已弃用,不安全且不再推荐,请考虑使用PDO
或mysqli
代替!
答案 3 :(得分:0)
您只从结果集中获取一行数据。如果需要所有行,则需要在循环结构中读出结果集。通常看起来像这样:
$q=mysql_query("SELECT * FROM `".$siteid."`");
$data = array();
while($row = mysql_fetch_array($q)) {
$data[] = $row;
}
echo serialize($data);
一些重要的注意事项:
mysql_*
函数,因为它们已被弃用。请考虑使用mysqli
或PDO
代替。$siteid
。