我想从包含所有数据字段的数组中获取一个数据库字段,这里是m代码:
public function show($id)
{
$data['product'] = $this->products_model->get_product_by_id($id);
foreach ($data['product'] as $row) {
$seller = $row['seller_id'];
}
$data['seller_name'] = $this->members_model->get_members_by_id($seller);
if (empty($data['product']))
{
show_404();
}
$data['main_content'] = 'pages/show';
$this->load->view('templates/template', $data);
}
我认为代码是自我解释我想要的是从产品数据库中获取 seller_id 字段以使用它来抓取<来自成员数据库的strong> seller_name 字段。我认为它不起作用的代码就是这部分:
foreach ($data['product'] as $row) {
$seller = $row['seller_id'];
}
它给了我这个错误:
严重性:注意
消息:数组到字符串转换
答案 0 :(得分:2)
Severity: Notice
Message: Array to string conversion
此消息表示您正在获取一个数组,并且您将其视为字符串,因为您将其作为字符串传递。
所以这里是条件,要么你在$data['product']
得到多个值而且是的,这是正确的,因为你在那里应用foreach。所以以这样的方式进行查询,它只返回products表中的一行那将是解决方案
答案 1 :(得分:2)
您不需要foreach循环,只需检查!empty($data['product'])
并使用$data['product']['seler_id']
或$data['product'][0]['seller_id']
取决于您的模型代码。因此,正如您想要ID的精确产品一样,您的代码应如下所示:
public function show($id)
{
$data['product'] = $this->products_model->get_product_by_id($id);
if (empty($data['product']))
{
show_404();
}
else
{
$seller_id = $data['product']['seller_id'];
$data['seller_name'] = $this->members_model->get_members_by_id($seller);
$data['main_content'] = 'pages/show';
$this->load->view('templates/template', $data);
}
}
这里有一个通知,因为你有表之间的关系,模型中的查询应该包含JOIN部分,你可以在一个查询中获得卖家详细信息。基本上,您的$ data ['product']将同时或在一个查询中包含名称(以及卖家表中的其他详细信息)。检查this link。
答案 2 :(得分:1)
使用array_column
获取一个数组中的所有seller_id
。就像var_dump array_column ( $data, 'seller_id' )
。
答案 3 :(得分:0)
很抱歉伙计问题在于查看页面,这就是我在视图页面中使用数组的方式,它确实有效:
foreach($seller_name as $row){
echo'<p class="product-price">'.$row['user_name'].'</p>';
echo'<p class="product-price">'.$row["phone_number"].'</p>';
}