【问题标题】:sql query doesn't retrieve all the records just retrieve the last recordsql查询不检索所有记录只检索最后一条记录
【发布时间】:2017-03-13 14:24:22
【问题描述】:

在 WordPress 和 Google Map API 上使用 PHP 和 MYSQL,以便从 MYSQL 数据库中检索数据并在 Google Map 上显示带有信息窗口的标记。

问题是地图没有出现在网页上,但 SQL 查询正在检索所需的数据。

我在哪里有 SQL 查询:

检索数据并将其显示在表格中

示例我有 3 条记录必须根据用户选择显示 但查询只显示最后一条记录而不是 3 条记录

查询中的错误在哪里:

查询:

$sql = $wpdb->prepare("select i.siteID
     , i.siteNAME
     , i.equipmentTYPE
     , c.latitude
     , c.longitude
     , c.height 
     , o.ownerNAME
     , o.ownerCONTACT
     , x.companyNAME
     , y.subcontractorCOMPANY
     , y.subcontractorNAME
     , y.subcontractorCONTACT
  from site_info i
  LEFT  
  JOIN owner_info o
    on i.ownerID = o.ownerID
  LEFT  
  JOIN company_info x
    on i.companyID = x.companyID
  LEFT 
  JOIN subcontractor_info y
    on i.subcontractorID = y.subcontractorID
    LEFT JOIN site_coordinates2 c
    on i.siteID=c.siteID 
    where 
    i.siteNAME = %s
    AND 
    o.ownerNAME = %s
    AND 
    x.companyNAME = %s
   ",$site_name,$owner_name,$company_name);

 $query_submit =$wpdb->get_results($sql, OBJECT);

    echo "<br>";
    echo "<br>";
//echo $sql;

//    var_dump($_POST['site_name']);

foreach ($query_submit as $obj) {



$obj->siteNAME;
$obj->ownerNAME;
$obj->companyNAME;
$obj->subcontractorNAME;
$obj->siteID;
$obj->equipmentTYPE;
$obj->latitude;
$obj->longitude;
$obj->height;
$obj->ownerCONTACT;
$obj->subcontractorCONTACT;
$obj->subcontractorCOMPANY;

    } 

// table that will dsiplay the results based on the user's selection //
   echo "<table width='30%' ";

echo     "<tr>";
echo           "<td>Site Name</td>";
echo           "<td>Owner Name</td>";
echo           "<td>Company Name</td>";
echo           "<td>Subcontractor Name</td>";
echo           "<td>Site ID</td>";
echo           "<td>Equipment Type</td>";
echo           "<td> Lattitude</td>";
echo           "<td>Longitude </td>";
echo           "<td> Height</td>";
echo           "<td> Owner Contact</td>";
echo           "<td> Sub Contact</td>";
echo           "<td> Sub company Name</td>";
echo   "</tr>";  
echo   "<tr>";        
echo         "<td>".$obj->siteNAME."</td>";
echo         "<td>".$obj->ownerNAME."</td>";
echo         "<td>".$obj->companyNAME."</td>";
echo         "<td>".$obj->subcontractorNAME."</td>";
echo         "<td>".$obj->siteID."</td>";
echo         "<td>".$obj->equipmentTYPE."</td>";
echo         "<td>".$obj->latitude."</td>";
echo         "<td>".$obj->longitude."</td>";
echo         "<td>".$obj->height."</td>";
echo         "<td>".$obj->ownerCONTACT."</td>";
echo         "<td>".$obj->subcontractorCONTACT."</td>";
echo         "<td>".$obj->subcontractorCOMPANY."</td>";
echo  "</tr>";

echo  "<tr>";
echo     "<td>";

?>

【问题讨论】:

标签: php mysql left-join


【解决方案1】:

将表格行移动到 while 循环内,将标题行移到循环之前,然后您将看到所有数据,而不仅仅是最后一行

$sql = $wpdb->prepare("select i.siteID
     , i.siteNAME, i.equipmentTYPE, c.latitude
     , c.longitude, c.height , o.ownerNAME
     , o.ownerCONTACT, x.companyNAME, y.subcontractorCOMPANY
     , y.subcontractorNAME, y.subcontractorCONTACT
  from site_info i
    LEFT JOIN owner_info o on i.ownerID = o.ownerID
    LEFT  JOIN company_info x on i.companyID = x.companyID
    LEFT JOIN subcontractor_info y on i.subcontractorID = y.subcontractorID
    LEFT JOIN site_coordinates2 c on i.siteID=c.siteID 
  where i.siteNAME = %s
    AND o.ownerNAME = %s
    AND x.companyNAME = %s
   ",$site_name,$owner_name,$company_name);

$query_submit =$wpdb->get_results($sql, OBJECT);

echo "<br>";
echo "<br>";

// table that will dsiplay the results based on the user's selection //
echo "<table width='30%' ";
echo     "<tr>";
echo           "<td>Site Name</td>";
echo           "<td>Owner Name</td>";
echo           "<td>Company Name</td>";
echo           "<td>Subcontractor Name</td>";
echo           "<td>Site ID</td>";
echo           "<td>Equipment Type</td>";
echo           "<td> Lattitude</td>";
echo           "<td>Longitude </td>";
echo           "<td> Height</td>";
echo           "<td> Owner Contact</td>";
echo           "<td> Sub Contact</td>";
echo           "<td> Sub company Name</td>";
echo   "</tr>";  

foreach ($query_submit as $obj) {
    echo   "<tr>";        
    echo         "<td>".$obj->siteNAME."</td>";
    echo         "<td>".$obj->ownerNAME."</td>";
    echo         "<td>".$obj->companyNAME."</td>";
    echo         "<td>".$obj->subcontractorNAME."</td>";
    echo         "<td>".$obj->siteID."</td>";
    echo         "<td>".$obj->equipmentTYPE."</td>";
    echo         "<td>".$obj->latitude."</td>";
    echo         "<td>".$obj->longitude."</td>";
    echo         "<td>".$obj->height."</td>";
    echo         "<td>".$obj->ownerCONTACT."</td>";
    echo         "<td>".$obj->subcontractorCONTACT."</td>";
    echo         "<td>".$obj->subcontractorCOMPANY."</td>";
    echo  "</tr>";

} 

echo '</table>';   

?>

【讨论】:

  • 这是真的@Fred-ii-
  • @Fred-ii- 相同的代码,不同的问题。我想当时 OP 还没有意识到这个问题
  • @RiggsFolly 我摆姿势。
  • @Fred-ii- 是的...我错了。如果你愿意,你可以复制这个我已经复制了我对另一个问题的回答
【解决方案2】:

如果您仔细查看代码,您会发现foreach 循环不断地为$obj 分配不同的属性值。 但是你没有echo他们。所以什么都不会出现。 然后当循环结束时,$obj 具有表最后一行的属性值。然后你回应了他们。

您需要做的是echo foreach 循环内的表格行。因此,一旦它为$obj 赋值,你就可以echo 他们。

循环结束后,关闭表格。

echo "<table width='30%'>";

echo     "<tr>";
echo           "<td>Site Name</td>";
echo           "<td>Owner Name</td>";
echo           "<td>Company Name</td>";
echo           "<td>Subcontractor Name</td>";
echo           "<td>Site ID</td>";
echo           "<td>Equipment Type</td>";
echo           "<td> Lattitude</td>";
echo           "<td>Longitude </td>";
echo           "<td> Height</td>";
echo           "<td> Owner Contact</td>";
echo           "<td> Sub Contact</td>";
echo           "<td> Sub company Name</td>";
echo   "</tr>";

foreach ($query_submit as $obj) {

$obj->siteNAME;
$obj->ownerNAME;
$obj->companyNAME;
$obj->subcontractorNAME;
$obj->siteID;
$obj->equipmentTYPE;
$obj->latitude;
$obj->longitude;
$obj->height;
$obj->ownerCONTACT;
$obj->subcontractorCONTACT;
$obj->subcontractorCOMPANY;

echo   "<tr>";        
echo         "<td>".$obj->siteNAME."</td>";
echo         "<td>".$obj->ownerNAME."</td>";
echo         "<td>".$obj->companyNAME."</td>";
echo         "<td>".$obj->subcontractorNAME."</td>";
echo         "<td>".$obj->siteID."</td>";
echo         "<td>".$obj->equipmentTYPE."</td>";
echo         "<td>".$obj->latitude."</td>";
echo         "<td>".$obj->longitude."</td>";
echo         "<td>".$obj->height."</td>";
echo         "<td>".$obj->ownerCONTACT."</td>";
echo         "<td>".$obj->subcontractorCONTACT."</td>";
echo         "<td>".$obj->subcontractorCOMPANY."</td>";
echo  "</tr>";

}

echo "</table>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 2016-05-19
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多