-3

这是我的代码

<?php 
    $result = mysql_query("SELECT * FROM post WHERE username = ".$username." ORDER BY ID DESC ");
    while($row = mysql_fetch_array($result)){ 
    ?>
        <div class="post">
            <a href="/p/<?php echo $row['ID']; ?>" class="post-title"><?php echo $row['title']; ?> - (Rating: <?php echo $row['rank']; ?>)</a>
            <p class="post-content"><?php echo $row['description']; ?><br /><br />On <?php echo $row['date']; ?></p>
        </div>
    <?php }; ?>

但我得到这个错误:

警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 77 行的 /*/programs/user.php 中给出

4

2 回答 2

3

我怀疑你忘了用单引号括起来

$result = mysql_query("SELECT * 
                       FROM post 
                       WHERE username = '".$username."' 
                       ORDER BY ID DESC ");

但是你仍然容易受到 sql 注入的影响。请花时间阅读下面的文章

在 PHP 中防止 SQL 注入的最佳方法是什么?

于 2012-10-14T14:02:32.330 回答
0

mysql_query()FALSE如果出现错误,则返回布尔值。所以你的SELECT说法有误。

$result === FALSE尝试使用$result. 如果$result === FALSE,请使用mysql_error()以了解有关问题的更多信息。

请注意,不推荐使用mysql_query()和其他mysql_*功能。改为移至mysqli_*PDO函数/方法。PDO和的一大特点mysqli_*是准备好的陈述。它们将帮助您避免 SQL 注入攻击。

于 2012-10-14T14:02:57.363 回答