PHP OOP中出现未定义的索引错误消息

时间:2018-02-21 23:43:46

标签: php oop

我正在使用PHP OOP开发一个在线商店项目。基本上在这个项目中,每个产品都与产品供应商相关联。因此,为了使供应商列表,我在我的数据库中创建了一个名为suppliers的表。然后我编码了这个:

$supplierSet = new Products();
$suppliers = $supplierSet->NumSupplier();
if(isset($_GET['page'])){
    $page = $_GET['page'];
    if($page == 1){
        $supplierShow = $supplierSet->GetSupplierp(0,10);
    }
    if(!empty($suppliers)){
        foreach($supplierShow as $supplier){ 
           $nums = $supplierSet->NumSupplierProduct($supplier['supplier_title']);
           echo "
           <tr>
               <td>".$supplier['table_id']."</td>
               <td>".$supplier['supplier_title']." ($nums)</td>
               <td><a href='supplierdelete.php?supplier_id=".$supplier['supplier_id']."'><span class='label label-danger'>REMOVE</span></a></td>
          </tr>";
        }
    }
}

这是类Products(),我使用的两种方法都在这里:

public function GetSupplierp($id_number,$result_num)
{
    if(($id_number>=0)&&!empty($result_num))
    {
        $sup = $this->db->prepare("SELECT * FROM products LIMIT " . $id_number . ", " . $result_num);
        $sup->execute();
        $sup_array = array();
        while($row = $sup->fetch())
        {
            $sup_array[] = $row;
        }
        return $sup_array;
    }
}
public function NumSupplierProduct($supplier)
{
        $uuu = $this->db->prepare("SELECT * FROM products WHERE product_supplier = ?");
        $uuu->bindParam(1,$supplier);
        $uuu->execute();
        $row_sup = $uuu->rowCount();
        return $row_sup;
}

所以它看起来很干净但是每当我运行它时我都会遇到这些错误:

  

注意:未定义的索引:supplier_title(在下面的这一行):

$nums = $supplierSet->NumSupplierProduct($supplier['supplier_title']);
  

注意:未定义的索引:supplier_title(在下面的这一行):

<td>".$supplier['supplier_title']." ($nums)</td>
  

注意:未定义的索引:supplier_id(在下面的这一行):

<td><a href='supplierdelete.php?supplier_id=".$supplier['supplier_id']."'><span class='label label-danger'>REMOVE</span></a></td>

我知道这些类型的问题似乎是重复的,但我已经阅读了与 Undefined Index 错误相关的所有问题,而我无法解决我的问题。

所以,如果你对如何解决这个问题有任何想法,请告诉我..我一定会很感激!

提前致谢。

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为您的数据库查询返回的结果集没有该索引。

print_r($supplier)循环内部foreach然后exit执行该程序。查看输出以进行验证。 要使输出更具可读性,请在"<pre>"之前回显print_r()以使其以更易读的方式显示

echo "<pre>";
print_r($supplier);
exit;

这是一种非常常见的故障排除方法,用于查看数组在程序中的给定点包含的内容。

另外,你可以改变

while($row = $sup->fetch())
    {
        $sup_array[] = $row;
    }
    return $sup_array;

return $sup->fetchAll();

或进行问题排查

print_r($sup->fetchAll());
exit;