条件子句的问题

时间:2011-10-25 02:49:21

标签: php mysql

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我使用了条件子句: `

$link = mysql_connect("localhost", "root", "");
mysql_select_db("dvddb", $link);
$sql = "SELECT id, title, genre, format, year,FROM dvd WHERE title LIKE 'T%'";
$result = mysql_query($sql, $link);

>`

然而,我收到一个错误: 警告:mysql_fetch_assoc()要求参数1为资源,在第114行的C:\ xampp \ htdocs \ moviesort.php中给出布尔值

其中114是这一行: <?php while ($row = mysql_fetch_assoc($result))

包含第114行的完整代码如下:

<ul class="grid">

<?php while ($row = mysql_fetch_assoc($result)) 

{ ?>

<li>

<p class="image">
    <a href="synopsis.php?id=<?php echo $row['id']; ?>">
        <img src="getImage.php?id=<?php echo $row['id']; ?>" alt="" width="175" height="200" />
    </a>
    </p>
    <p class="name"><?php echo $row['title']; ?></p>
    <p class="genre"><?php echo $row['genre']; ?></p>
    <p class="format"><?php echo $row['format']; ?></p>
        <p class="year"><?php echo $row['year']; ?></p>
    </li>
    <?php } // while  
    ?>
</ul>

有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:3)

$sql = "SELECT id, title, genre, format, year,FROM dvd WHERE title LIKE 'T%'";
  1. 此查询错误,FROM
  2. 之前的逗号
  3. 使用mysql_error()获取确切的错误消息

答案 1 :(得分:3)

if (!$result) {
    echo mysql_error($link);
}

http://www.php.net/mysql_error

可能会抱怨year,附近的语法无效。

答案 2 :(得分:2)

您的查询中有额外的,,导致语法错误:

$sql = "SELECT id, title, genre, format, year,FROM dvd WHERE title LIKE 'T%'";
                                             ^--here

使用一些基本的防御性编程技术,你已经看到了这个错误。特别是,您没有检查数据库故障。

$result = mysql_query($sql, $link);
if ($result === FALSE) {
    die(mysql_error());
}

永远不要假设数据库操作已完成。即使您使用的查询字符串在语法上100%正确,它仍然可能由于其他任何原因而失败。