为什么我的内容不显示?

时间:2012-05-17 23:30:38

标签: php

工作原理:点击相册即可转到“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'
);

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

3 个答案:

答案 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是一个占位符,您应该在其中实际编写存储在数据库中的列名。