工作原理:点击相册即可转到“album.php?id =#”
//initialize some vars
$albumID = '';
//check what photo we are looking for
if(isset($_GET['id'])){
$albumID = mysql_real_escape_string($_GET['id']);
查询:
$sql = mysql_query(
SELECT *
FROM albums
JOIN songs
ON albums.performer=songs.performer
WHERE albums.albumID='albumID'
);
我想要完成的是让它显示专辑和曲目列表。有谁知道我应该如何解决这个问题?谢谢。
答案 0 :(得分:3)
$sql = mysql_query('
SELECT *
FROM albums
JOIN songs
ON albums.performer=songs.performer
WHERE albums.albumID="'.$albumID.'"');
答案 1 :(得分:2)
另外你应该知道,对传递的变量使用isset()
是不明确的,你应该进行特异性检查,并且总是知道将传递什么类型的值;
如果您只想允许整数,数字或两者兼而有之:
if(isset($_GET['id']))
只需检查其设置,这也可以是空白值。
if(!empty($_GET['id']))
这会检查其设置并且还有一个值
if(!empty($_GET['id']) && is_numeric($_GET['id']))
以上所有内容均为数字。
故事的寓意是你绝不应该相信用户输入是正确的类型。
答案 2 :(得分:2)
首先将查询放在字符串中:
$query = "SELECT * FROM albums JOIN songs ON albums.performer=songs.performer";
然后,如果有相册,请添加到该查询:
if ( !empty( $albumID ) ) {
$query = $query . " WHERE albums.albumID = $albumID";
}
此时,我们可以继续运行查询:
$result = mysql_query( $query ) or die( mysql_error() );
我们使用mysql_query
运行查询,并将其结果传递给$result
变量。如果出现任何问题,例如我们的查询中出现错误,我们的计划将die
,并且最新的mysql_error()
将会打印到屏幕上。
使用我们的$result
变量,我们现在可以循环并打印结果:
while ( $row = mysql_fetch_object( $result ) ) {
echo $row->columnA
}
请注意columnA
是一个占位符,您应该在其中实际编写存储在数据库中的列名。