1

它是如何工作的:点击专辑会带你到“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'
);

我想要完成的是让它显示专辑和曲目列表。有人知道我应该如何解决这个问题吗?谢谢你。

4

3 回答 3

3
$sql = mysql_query('
SELECT *
FROM albums
JOIN songs
ON albums.performer=songs.performer
WHERE albums.albumID="'.$albumID.'"');
于 2012-05-17T23:32:24.460 回答
2

您还应该知道,仅isset()在传递的变量上使用是模棱两可的,您应该进行特异性检查并始终知道将传递什么类型的值;

如果您只想允许整数、数字或两者的混合:

if(isset($_GET['id']))只需检查其设置,这也可能是一个空白值。

if(!empty($_GET['id']))这会检查它的集合并且还有一个值

if(!empty($_GET['id']) && is_numeric($_GET['id']))以上都是数字。

这个故事的寓意是你永远不应该相信用户输入是正确的类型。

于 2012-05-17T23:47:04.887 回答
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是一个占位符,您实际上应该在其中写入已存储在数据库中的列名。

于 2012-05-17T23:50:24.747 回答