2012-04-19 10 views
1

警告:mysql_fetch_assoc():与えられた引数は、ライン35警告:mysql_fetch_assoc():

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 
     ?> 

*に有効なMySQLの結果リソースではありませんIだろう私が間違っていることを誰かが私に説明できるかのように、ウェブを検索しましたが、私の問題を解決できませんでした。ザッツ私がここにいる理由:) /////////問題は

次の質問解決しよう:私の間違った藤堂など イムのエコー、(代わりに死んのを)..しかし、問題は、彼はまだ追加されます、ですそれは私のDBにあります。だれかがそれに対して何をするべきか説明することができます、彼は死ぬなら、彼はまだそれを追加しますが、メッセージを与えるだけであることを理解します。

私はここにスクリプトを入れる必要はないと思います。しかしもしそうなら。それを加えてください。

+0

の可能重複[警告PHPでmysql_fetch_assocを使用](http://stackoverflow.com/questions/169520/warning-when-using-mysql-フェッチ・連想・イン・PHP)を – jprofitt

+0

http://stackoverflow.com/search?q=Warning%3A+mysql_fetch_assoc%28%29%3A+supplied+argument+is+not+a+valid+MySQL+result+resource – deceze

+0

クエリの後に 'mysql_error()'をチェックしてください。フェッチできない理由がいくつかあります。 – Cfreak

答えて

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つ目の質問について

イムのエコー、(代わりに死んの)私の間違った藤堂など。しかし 問題は、彼がまだ私のDBに追加します。だれかが何を説明してもらえないのですか? 彼は死ななければ、彼はまだそれを追加します。 メッセージを追加するだけです。

私に応じて最適なソリューション:

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 
    } 
}