【问题标题】:extract array values from a function从函数中提取数组值
【发布时间】:2011-07-24 22:02:46
【问题描述】:

下面是我在 PHP 中创建的一个函数,它以数组的形式返回一些产品信息。在我调用此函数的网页上,我希望能够指定精确的数组元素,例如产品描述 ($result2['itm_desc'])。请有人指出我这样做的正确方向。我假设你调用了一个像 fetch array 这样的函数,但我不太确定如何执行它。

public function getAllReelImages(){
$sql = "SELECT id FROM $this->table3 WHERE itm_cat = 2 ORDER BY id ASC";
echo "<br /><br />";
$stmt = mysqli_query($this->connection, $sql);

/*fetch values*/

while($result = mysqli_fetch_array($stmt)){
echo "<br /><br />";

$sql2 = "SELECT itm_details.id,itm_details.itm_make,itm_details.itm_model,itm_details.itm_desc,itm_pic_detail.itm_pic_name, itm_value.itm_sale_price 
FROM 
itm_details, itm_pic_detail, itm_value 
WHERE 
itm_details.id = {$result['id']} AND itm_pic_detail.id = {$result['id']} 
AND itm_value.id = {$result['id']} ORDER BY id ASC"; 

$stmt2 = mysqli_query($this->connection, $sql2);
while($result2 = $stmt2->fetch_array()){
echo ($result2['id']); echo"<br />";
echo ($result2['itm_make']); echo"<br />";
echo ($result2['itm_model']); echo"<br />";
echo ($result2['itm_desc']); echo"<br />";
echo ($result2['itm_sale_price']); echo"<br />";
echo "<img src='$this->dir"."{$result2['itm_pic_name']}'><br />";
echo"<br />";
echo $value; 
}
}
}

【问题讨论】:

  • 您确实需要用您使用的语言标记您的问题。这是您第三次收到此类评论。
  • 为什么你的代码没有缩进?哎呀!

标签: php arrays mysqli


【解决方案1】:

首先.. 你的代码很糟糕。我让它更清楚一点。例如:echo ($result2['id']); echo"&lt;br /&gt;"; TO-> echo $result2['id'] . '&lt;br /&gt;';(供以后参考。)

他们现在的代码是这样的。您不会向数组添加任何内容,因为您会立即回显它们。我制作了我的版本,首先创建数组,然后你可以使用该数组..以任何你想要的方式:)

ORDER BY 默认不用作 ASC 吗?

我还将第一个查询更改为更具动态性。

注意:我不太擅长 mysql 表连接,必须有人验证第二个查询。但在我看来,这是绝对不正确的。但是,我将其发布在使用函数创建数组然后显示它的参考中。

NOTE2:我希望你的问题是关于 PHP o.0

# This should be in some class ?!
function getAllReelImages ($category) {
    $sql = "SELECT * FROM `" . $this->table3 . "` WHERE `itm_cat` = '" . $category . "' ORDER BY `id` ASC";
    $stmt = mysqli_query($this->connection, $sql);
    while($result = mysqli_fetch_array($stmt)) {
        $sql2 = "SELECT `itm_details.id`, `itm_details.itm_make`, `itm_details.itm_model`, `itm_details.itm_desc`, `itm_pic_detail.itm_pic_name`, `itm_value.itm_sale_price` FROM `itm_details`, `itm_pic_detail`, `itm_value` WHERE `itm_details.id` = '" . $result['id'] . "' AND `itm_pic_detail.id` = '" . $result['id'] . "' AND `itm_value.id` = '" . $result['id'] . "' ORDER BY `id` ASC"; 
        $stmt2 = mysqli_query($this->connection, $sql2);
        while($result2 = $stmt2->fetch_array()){
            $returns[$result2['id']]['id'] = $result2['id'];
            $returns[$result2['id']]['itm_make'] = $result2['itm_make'];
            $returns[$result2['id']]['itm_model'] = $result2['itm_model'];
            $returns[$result2['id']]['itm_desc'] = $result2['itm_desc'];
            $returns[$result2['id']]['itm_sale_price'] = $result2['itm_sale_price'];
            $returns[$result2['id']]['itm_pic_name'] = $this->dir . $result2['itm_pic_name'];
        }
    }
    return $returns;
}

# Display the results:
echo '<br /><br />';
foreach (getAllReelImages(2) as $img_id => $img_value) {
    echo $img_id . '<br>';
    echo $img_value['itm_make'] . '<br>';
    echo $img_value['itm_model'] . '<br>';
    echo $img_value['itm_desc'] . '<br>';
    echo $img_value['itm_sale_price'] . '<br>';
    echo $img_value['itm_pic_name'] . '<br>';
    echo '<hr>';
}
echo '<br />';

【讨论】:

  • 非常感谢。一个非常有用的回复,解决了我的问题。:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多