Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php echo只从数据库返回一个结果_Php - Fatal编程技术网

Php echo只从数据库返回一个结果

Php echo只从数据库返回一个结果,php,Php,我有2个数据库表用户和画廊,网页将显示无限的个人资料,如果用户有一个画廊,它将显示在那里的个人资料图片 目前数据库中有2个用户用户1有5个图库图像用户2没有 用户和gallery表通过两个表中的D=ID字段连接 第一个用户在其个人资料下方显示其图库,但用户2根本不显示,每个新用户和图库(如果有)都会像列表一样显示在彼此下方。但它呼应出了第一个用户和他的图库,仅此而已 如果在查询中输入WHERE U.ID=U.ID=1或WHERE U.ID=2,将在列表中不同时显示两个用户 CREATE TABL

我有2个数据库表用户和画廊,网页将显示无限的个人资料,如果用户有一个画廊,它将显示在那里的个人资料图片

目前数据库中有2个用户用户1有5个图库图像用户2没有

用户和gallery表通过两个表中的D=ID字段连接

第一个用户在其个人资料下方显示其图库,但用户2根本不显示,每个新用户和图库(如果有)都会像列表一样显示在彼此下方。但它呼应出了第一个用户和他的图库,仅此而已

如果在查询中输入WHERE U.ID=U.ID=1或WHERE U.ID=2,将在列表中不同时显示两个用户

CREATE TABLE `users` (
  `ID` int(11) UNSIGNED NOT NULL,
  `Email` varchar(255) NOT NULL,
  `FullName` varchar(300) NOT NULL,
  `JobTitle` varchar(300) NOT NULL,
  `Bio` text,
  `Photo` text,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE `gallery` (
  `GalleryID` bigint(11) UNSIGNED NOT NULL,
  `ID` int(11) DEFAULT NULL,
  `GalleryImage` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;




<?php 


$stmt = $db->prepare("
SELECT U.ID,
       U.FullName,
       U.Email,
       U.JobTitle,
       U.Bio,
       U.Photo, 
       group_concat(G.GalleryImage) as GalleryImage 
FROM users as U 
join gallery as G 
ON U.ID = G.ID 
WHERE U.ID = U.ID 

 ");


$stmt->execute();
$result = $stmt->get_result();


 while ($row = mysqli_fetch_assoc($result)) {

        $ID = $row['ID'];        
        $FullName = $row['FullName'];    
        $Email = $row['Email'];   
        $JobTitle = $row['JobTitle'];
        $Bio = $row['Bio'];
        $Photo = $row['Photo'];         
        $GalleryImage = explode(',', $row['GalleryImage']);

        if (isset($Photo) && ! empty($Photo)) {
            $ProfileImage = "$Photo";
        } else {
            $ProfileImage= "avatar.jpg";
        }


   echo "<div class='container team-wrap'>
           <div class='row'>
             <div class='col-md-6'>
             <img class='img-responsive' src='$ProfileImage'>
               </div>
                 <div class=\"col-md-6\">
                    <strong>$FullName<br>$JobTitle</strong>
                      <br>
                      <p>$Bio</p>
                      <a href='mailto:$Email' class='btn btn-info'>Contact Me</a>
                </div>
             </div>
          </div>";

     echo "

  <br>
<br>
<br>   

";

   echo "<div class='container team-wrap'>";   

   foreach ($GalleryImage as $img){        
       if (isset($img) && ! empty($img)) { 

           //Display this row as many times as needed by data in this row.
           echo "<img style='height: 100px; width: 100px;' src='cdn/assets/gallery/$img'>";       

       } else { 

           echo "NO IMAGES";
       }

   }


}  

echo"</div>";
?>
创建表“用户”(
`ID`int(11)无符号非空,
`电子邮件'varchar(255)不为空,
`FullName`varchar(300)不为空,
`JobTitle`varchar(300)不为空,
`生物“文本,
`照片`文字,
)ENGINE=MyISAM默认字符集=utf8;
创建表“gallery”(
`GalleryID`bigint(11)无符号非空,
`ID`int(11)默认为空,
`GalleryImage`文本不为空
)ENGINE=MyISAM默认字符集=utf8;

您需要将表名放在中表名的前面,如:

$stmt = $connection->prepare("SELECT * FROM Games, Mods WHERE Games.GameID = Mods.GameID");
这是为了识别查询中两个表的不明确(重复)名称

我建议对表的关系使用关键字JOIN

$stmt = $connection->prepare("SELECT * FROM Games JOIN Mods ON Games.GameID = Mods.GameID");
在您的情况下,可以更好地使用函数USING(),因为这两个表的列名称相同,例如:

$stmt = $connection->prepare("SELECT * FROM Games JOIN Mods USING(GameID)");

使用
JOIN
Group\u concat
您将得到逗号分隔的Modname,如
mod1、mod2、…

SELECT G.GameID,
       G.GameName,
       G.GameCover,
       group_concat(M.ModName) as ModName 
FROM Games as G 
join Mods as M 
ON G.GameID = M.GameID 
group by G.GameID
输出:

 GameID    GameName    GameCover     ModName

   1        Benten       g1           mod1,mod2,mod3
$checker=array();
$profileArray=array();
while($row=mysqli\u fetch\u assoc($result))
{
$profileArray[$row['ID']['GalleryImage'][]=$row['GalleryImage'];
if(!in_数组($row['ID'],$checker))
{
while(列表($key,$value)=每个($row))
{
如果($key!=“GalleryImage”)
{
$profileArray[$row['ID'][$key]=$value;
}
}
$checker[]=$row['ID'];
}
}
foreach($profileArray作为$row)
{
$ID=$row['ID'];
$FullName=$row['FullName'];
$Email=$row['Email'];
$JobTitle=$row['JobTitle'];
$Bio=$row['Bio'];
$Photo=$row['Photo'];
$GalleryImages=$row['GalleryImages'];
如果(设置($Photo)&!空($Photo))
{
$ProfileImage=“$Photo”;
}
其他的
{
$ProfileImage=“avatar.jpg”;
}
$output.=”
$FullName
$JobTitle

$Bio

"; //信息行末尾 $output.=“


”; //开始画廊行 $output.=” "; 如果(!空($GalleyImages)) { foreach($GalleyImages作为$img) { //按此行中的数据所需的次数显示此行。 $output.=“”; } } 其他的 { $output.=“要显示而不是图像的HTML”; } $output.=” "; } echo$输出;
在代码中尝试使用此SQL

SELECT u.ID, u.Email, u.FullName, u.JobTitle, u.Bio, u.Photo,GROUP_CONCAT(g.GalleryImage) GalleryImage
FROM `users` u, `gallery` g 
WHERE u.ID = g.ID GROUP BY u.ID

那么问题是什么?您始终可以使用检查返回的行数。选择G.GameID、G.GameName、G.GameCover、group_concat(M.ModName)从游戏G加入Mods G.GameID=M.GameID组G.GameIDI我想这一定很难很多视图但没有答案我感觉不太糟糕now@jyothih如果我添加一个ModImageCover,它不会显示所有这些。请尝试此选项选择G.GameID、G.GameName、G.GameCover、,M.ModName作为游戏中的ModName作为G加入Mods作为G.GameID=M上的M。GameID@jyothih现在仍然有问题,第2场不显示,第1场每次重复mod@JYoThI请删除您对提供查询的问题的评论。这不是注释的目的。GROUP_CONCAT()是否给您一个逗号分隔的字符串?是的。你需要引爆它。
SELECT u.ID, u.Email, u.FullName, u.JobTitle, u.Bio, u.Photo,GROUP_CONCAT(g.GalleryImage) GalleryImage
FROM `users` u, `gallery` g 
WHERE u.ID = g.ID GROUP BY u.ID