0

我正在尝试为每个项目(如商店中的项目)显示信息。

像这样:

如果用户具有访问代码 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 ($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

}
?>

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

4

3 回答 3

1

您分配$vid_info$item_id
此行$item_id = $vid_info;导致值$item_id被清除。

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

于 2013-07-10T02:09:48.003 回答
0

我认为如果您进行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 }
}
于 2013-07-10T02:41:51.770 回答
0

我认为您有多个访问代码(因为您使用变量名称 $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));
于 2013-07-10T02:56:04.847 回答