我是 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/