【问题标题】:How to add item information via item id to fetched array codes using mysqli_fetch_array via foreach?如何通过项目 id 将项目信息添加到通过 foreach 使用 mysqli_fetch_array 获取的数组代码?
【发布时间】:2013-07-10 01:16:35
【问题描述】:

我正在尝试显示每个商品的信息,例如商店中的商品。

像这样:

如果用户有访问代码 1234,则通过 mysqli_fetch_array 在 foreach 中显示

在 foreach 中:检测到 1234 并显示该项目的信息

我有一个项目信息表和一个通过 user_id 连接到用户的用户访问代码表。


我有用于尝试此操作的当前代码:

用于通过 mysqli_fetch_array 获取数组/代码:

  if (isset($_SESSION['user_login'])) {
$access_query = mysqli_query($connection, "SELECT access FROM user_access WHERE user_id = '$user_id'");
$access_codes = Array();
while ($row = mysqli_fetch_array($access_query,MYSQL_BOTH)) {
    $access_codes[] =  $row['access'];  
}
 }

尝试使用现有项目编号/访问编号获取每个项目的信息:

   if (isset($_SESSION['user_login'])) {
    $info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id = '$access_codes'") or die (mysqli_error($connection));
    $info_assoc = mysqli_fetch_assoc($info_query);
    $info_info = $info_assoc['info_id'];
 }

foreach:

foreach ($access_codes as $item_id) {


$item_id = $item_info;

?>

<div style="background-color: #F2F2F2; border: 1px #E3E3E3 solid; padding: 20px; margin: 5px; width: 150px; float: left;"><?php echo $item_id;?></div>


<?php

}
?>

我确实有它可以显示每个项目的样式,但不会显示任何内容。它知道有项目,有多少,只是在样式中没有显示任何内容。

【问题讨论】:

  • 这三个代码示例都相关吗?你能更新一下它在你的代码中的实际外观吗?
  • 这里:demo.php-pastebin.com/ykk6pdKI 虽然,我确实改变了一些东西来尝试自己弄清楚。

标签: php shop info


【解决方案1】:

您将$vid_info 分配给$item_id
这行$item_id = $vid_info; 导致$item_id 中的值被清除。

$item_id = $item_info; 做同样的事情。

【讨论】:

  • 我将“vid”更改为“item”,以便外部观众更容易理解。我会解决的。
  • @John 您仍在覆盖您在foreach ($access_codes as $item_id) 中定义的$item_id。无论您将其设置为$vid_info 还是$item_info,它仍然会覆盖$access_codes
【解决方案2】:

如果您执行JOIN 查询,我认为您可以简单地编写所有代码 -

SELECT i.*
FROM user_access a 
LEFT JOIN item_info i 
ON i.item_id = a.access  
WHERE a.user_id = '$user_id'

这会将您的 user_access 表与您在 access = item_id 上的 item_info 表连接在一起,其中 user_id 是登录用户。

那么你的代码可以简化为 -

if (isset($_SESSION['user_login'])) {
    $info_query = mysqli_query($connection, "SELECT i.* FROM user_access a LEFT JOIN item_info i ON i.item_id = a.access  WHERE a.user_id = '$user_id'");
    while ($row = mysqli_fetch_assoc($info_query)) { ?>
          <div style="background-color: #F2F2F2; border: 1px #E3E3E3 solid; padding: 20px; margin: 5px; width: 150px; float: left;"><?php echo $row['vid_id']; ?></div>
   <?php }
}

【讨论】:

    【解决方案3】:

    我认为您有多个访问代码(因为您使用变量名称 $access_codes),并且您希望从 $info_query 中获取多个 $info_info,其中 item_id 等于访问代码。
    如果是这种情况,请从

    $info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id = '$access_codes'") or die (mysqli_error($connection));
    

    $s_access_codes = implode(',', $access_codes);
    $info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id in ($s_access_codes)") or die (mysqli_error($connection));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      相关资源
      最近更新 更多