1

警告: : 35 行目 の*mysql_fetch_assoc()に指定された引数は、有効な MySQL 結果リソースではありません

if($_SERVER['REQUEST_METHOD'] =='POST'){

    $userid = $_SESSION['userid'];
    $todo = $_POST['todo'];
    $description = $_POST['description'];
    $date = $_POST['date'];
    $priority = $_POST['priority'];
    $username = $_SESSION['username'];
}   

$get_product = mysql_query("SELECT * FROM inlog WHERE userid = '".$_SESSION['userid']."' ORDER BY id DESC");

while ($row = mysql_fetch_assoc($get_product)) { // Line 35
      ?>

誰かが私が間違ったことを説明してくれたらいいのにと思います.Webを検索しましたが、私の問題を解決できませんでした. それが私がここにいる理由です:) ///////// 問題が解決しました

次の質問: 私は反響している、(死ぬ代わりに) 私の間違った仕事など.. 誰かがそれに対して何をすべきかを説明できますか? 彼が死ななくても、彼はそれを追加することを理解していますが、メッセージを与えるだけです.

ここにスクリプトを入れる必要はないと思います。しかし、もしそうなら。追加します。

4

1 に答える 1

2

ほとんどの場合、何かが空です。スクリプトを更新して問題を特定します。

if($_SERVER['REQUEST_METHOD'] =='POST'){
    $userid = (int) $_SESSION['userid']; // Cast to (int) to make it safe
    if (empty($userid))
        die('Invalid User ID');

    $todo = $_POST['todo'];
    if (empty($todo))
        die('Invalid todo');

    $description = $_POST['description'];
    if (empty($description))
        die('Invalid description');

    $date = $_POST['date'];
    if (empty($date))
        die('Invalid date');

    $priority = $_POST['priority'];
    if (empty($priority))
        die('Invalid priority');

    $username = $_SESSION['username'];
    if (empty($todo))
        die('Invalid username');

    $get_product = mysql_query("SELECT * FROM inlog WHERE userid = '".$userid."' ORDER BY id DESC"); // See how I changed $_SESSION['userid'] to $userid
}   

また、変数を使用してクエリを実行する前に、変数をエスケープしていることを確認してください。ユーザーIDを整数にキャストしたのと同じ方法です。

2番目の質問について:

次の質問: 私は反響している、(死ぬ代わりに) 私の間違った仕事など.. 誰かがそれに対して何をすべきかを説明できますか? 彼が死ななくても、彼はそれを追加することを理解していますが、メッセージを与えるだけです.

私によると最善の解決策:

if($_SERVER['REQUEST_METHOD'] =='POST'){
    $errors = array();

    $userid = (int) $_SESSION['userid']; // Cast to (int) to make it safe
    if (empty($userid))
        $errors[] = 'Invalid User ID'

    $todo = $_POST['todo'];
    if (empty($todo))
         $errors[] = 'Invalid todo';

    $description = $_POST['description'];
    if (empty($description))
        $errors[] = 'Invalid description';

    $date = $_POST['date'];
    if (empty($date))
        $errors[] = 'Invalid date';

    $priority = $_POST['priority'];
    if (empty($priority))
        $errors[] = 'Invalid priority';

    $username = $_SESSION['username'];
    if (empty($todo))
        $errors[] = 'Invalid username';

    // Only do the query when there are no errors    
    if (count($errors) <= 0) {
        $get_product = mysql_query("SELECT * FROM inlog WHERE userid = '".$userid."' ORDER BY id DESC"); // See how I changed $_SESSION['userid'] to $userid
    } else {
        echo implode('<br />', $errors); // or return is also a possibility
    }
} 
于 2012-04-19T15:04:19.747 に答える