php - mysql查询一个数组

标签 php mysql arrays

我是 php 新手。我不知道如何查询我的数据库来列出这个模型。对于每个数组,我想查询数据库以仅列出与“”中左侧相关的内容。 我的数据库由 2 个表组成。

table1 = 相册

身份证、姓名

表 2 = 图片

id, 相册, picPath

$q_albums = array(

            'People' => array(
                        ALBUM_PATH.'4.jpg',
                        ALBUM_PATH.'11.jpg',
                        ALBUM_PATH.'10.jpg'),               
            'Nature' => array(
                        ALBUM_PATH.'2.jpg',
                        ALBUM_PATH.'3.jpg',
                        ALBUM_PATH.'5.jpg',
                        ALBUM_PATH.'6.jpg',
                        ALBUM_PATH.'7.jpg'),                            
            'Art'   => array(
                        ALBUM_PATH.'1.jpg',
                        ALBUM_PATH.'8.jpg',
                        ALBUM_PATH.'9.jpg',
                        ALBUM_PATH.'2.jpg'),                
            'Wilderness' => array(
                        ALBUM_PATH.'3.jpg',
                        ALBUM_PATH.'2.jpg',
                        ALBUM_PATH.'5.jpg',
                        ALBUM_PATH.'7.jpg',
                        ALBUM_PATH.'6.jpg'),                            
            'Photography' => array(
                        ALBUM_PATH.'8.jpg',
                        ALBUM_PATH.'1.jpg',
                        ALBUM_PATH.'9.jpg',
                        ALBUM_PATH.'12.jpg'),                           
            'Fashion' => array(
                        ALBUM_PATH.'11.jpg',
                        ALBUM_PATH.'4.jpg',
                        ALBUM_PATH.'10.jpg'),

        );

最佳答案

正如 dev-null-dweller 所指出的,您需要根据循环中的查询结果构建数组。幸运的是,这很容易:

$sql = <<<END
  SELECT album.name AS albumName, picture.picPath AS picPath
  FROM album JOIN picture ON album.id = picture.album
END;

$res = $mysqli->query( $sql );
$q_albums = array();
while ( $row = $res->fetch_object() ) {
    // this line actually build the array, entry by entry:
    $q_albums[ $row->albumName ][] = $row->picPath; 
}
$res->close();

编辑:正如 Radical 先生所说,如果您希望结果包含空专辑,您应该将 JOIN 更改为 LEFT JOIN。如果您这样做,对于任何空相册,查询将返回包含空 picPath 的行,因此您将不得不以某种方式处理这些空路径。一种方法是在构建数组后包含类似以下代码的内容:

foreach ( $q_albums as $album => &$pics ) {
    // remove dummy null entries from empty albums
    if ( !isset( $pics[0] ) ) array_shift( $pics );
}

关于php - mysql查询一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047323/

相关文章:

php - 团队日程表的 MySQL 查询

php - 如何在数据库中存储数组(PHP/MySQL)?

c - c中多维数组的函数传递

arrays - 为什么我不能在 .each 方法之外修改数组?

html - 在 ColdFusion 中使用表单数组?

php - 如何使用 MYSQL GROUP_CONCAT 获取两个变量?

php - 制作您自己的代码示例框

php - PHP和MySQL:mysqli_num_rows()期望参数1为mysqli_result,给定 bool 值

mysql - Model::insert() 没有更新时间戳

php - 防止重复插入数据库