工作原理:点击相册会带你进入"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'
);我要做的就是让它显示专辑和曲目列表。有人知道我应该如何解决这个问题吗?谢谢。
发布于 2012-05-18 07:50:25
首先将您的查询放在一个字符串中:
$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是一个占位符,您应该在其中实际写入已存储在数据库中的列名。
发布于 2012-05-18 07:32:24
$sql = mysql_query('
SELECT *
FROM albums
JOIN songs
ON albums.performer=songs.performer
WHERE albums.albumID="'.$albumID.'"');发布于 2012-05-18 07:47:05
你也应该意识到,仅仅在传递的变量上使用isset()是模棱两可的,你应该进行特异性检查,并始终知道传递的是什么类型的值;
如果您希望仅允许整数、数字或两者的混合:
if(isset($_GET['id']))只是检查它的集合,这也可能是一个空值。
if(!empty($_GET['id']))检查它的集合,并且也有一个值
if(!empty($_GET['id']) && is_numeric($_GET['id']))上面的所有内容,并且是数字。
这个故事的寓意是,你永远不应该相信用户输入的类型是正确的。
https://stackoverflow.com/questions/10644835
复制相似问题