-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関数/メソッドに移動してください。との1つの優れた機能はPDOmysqli_*プリペアドステートメントです。SQLインジェクション攻撃を回避するのに役立ちます。

于 2012-10-14T14:02:57.363 に答える