[英]PHP loop not returning all possible MySQL query results
我是php和MySQL的新手。 我有一个数据库,其中包含两个称为人员(财产所有者)和财产的表。 表之间存在一对多关系。 例如,一个人可以拥有许多财产。
我正在使用php从数据库中检索数据(我已经与数据库建立了连接)。
我要达到的目的是:如果查询一个人的名字(无论是fname还是lname),那么该人拥有的所有属性的列表将显示在我的搜索结果表单中。 输出将显示为lname,fname,属性编号,属性道路,属性邮政编码。
但是,使用此代码,每个属性所有者名称只能得到两个结果输出。 :
$request = mysql_query("SELECT person.fname, person.lname, property.number, property.road, property.zipcode,
FROM person p
INNER JOIN property py
ON p.id = py.p_id
WHERE p.fname LIKE '%$search%'
OR p.lname LIKE '%$search%'
ORDER BY p.lname");
$number = mysql_num_rows($request);
if ($number == 0){
$result .= 'No results'.' '.$search;
} else {
$propertyinfo= array();
$count = 0;
$real = false;
$real_within_array = 0;
while ($nrow = mysql_fetch_array($query)){
$lname = $nrow['lname'];
$real = false;
for ($l = 0; $l < count($propertyinfo); $l++)
{
if ($propertyinfo[$l][0] == $lname)
{
$real = true;
$real_within_array = $l;
break;
}
}
if ($real)
{
$fname = $nrow['fname'];
$lname = $nrow['lname'];
$number = $nrow['number'];
$road = $nrow['road'];
$zipcode = $nrow['zipcode'];
$propertyinfo[$real_within_array][1][1] = $fname;
$propertyinfo[$real_within_array][2][1] = $lname;
$propertyinfo[$real_within_array][3][1] = $number;
$propertyinfo[$real_within_array][4][1] = $road;
$propertyinfo[$real_within_array][5][1] = $zipcode;
}
else
{
// Get all the data from the row.
$fname = $nrow['fname'];
$lname = $nrow['lname'];
$number = $nrow['number'];
$road = $nrow['road'];
$zipcode = $nrow['zipcode'];
$propertyinfo[$real_within_array][1] = $fname;
$propertyinfo[$real_within_array][2]= $lname;
$propertyinfo[$real_within_array][3][0] = $number;
$propertyinfo[$real_within_array][4][0] = $road;
$propertyinfo[$real_within_array][5][0] = $zipcode;
$count++;
}
}
示例:Adam Smith拥有4个属性,但是我只会得到他的两个属性的结果,而不是列表中的所有4个结果。
请帮忙。 我已经尽力解决了这个问题,但是我似乎偶然发现了一个困难的问题。
非常感谢您的帮助。 先感谢您。
什么是$uqery
? 也许:
while ($nrow = mysql_fetch_array($request)){
您将看到以下内容:
error_reporting(E_ALL);
ini_set('display_errors', '1');
至于所有其他东西,要知道$propertyinfo
是什么样子是不可能的。 非常令人费解的外观,所以我不关注。
我认为这是一个逻辑错误; 当您定义$ propertyinfo = array(); 它的大小为0,因此,带有for($ l = 0; $ l <count($ propertyinfo); $ l)块的代码仅在将某些值分配给$ propertyinfo后才开始运行。
尝试使用while(($nrow=mysql_fetch_assoc($query))!=null)
循环查询结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.