2011-11-27 122 views
0

我有一個查詢與$userid如果條件一個FOR循環內

$loginid = 2; 
$sql = mysql_query('SELECT cc.name, c.fullname, c.userid FROM mdl_course c, mdl_coursecat cc WHERE c.course = cc.id'); 
echo '<table>'; 
while($row = mysql_fetch_array($sql)) 
{ 
    $userid = $row['userid']; 
    echo '<tr><td>'; 
    if($userid == $loginid) 
    { 
    echo '<a href="">go to course</a>'; 
    } 
    else 
    { 
    echo 'you dont have permissions to go'; 
    } 
    echo '</td></tr>'; 
} 
echo '</table>';  

我的問題是檢查,它的不else語句中去。任何人都可以提出問題可能是什麼?

+0

打開錯誤報告。你的報價有點混亂... –

+0

我在快速瀏覽中看到2個問題:在你的'else'塊中引用不正確,不使用'mysql_fetch_object',而是直接迭代mysql結果資源(你不能這麼做)。如果您使用語法突出顯示的編輯器,引用問題很容易被發現... – ThiefMaster

+0

我認爲代碼現在是正確的,爲什麼我的其他語句不在這裏工作,它顯示爲空 – user1067018

回答

2

第一個很大的問題是,您使用$sql作爲數組,但mysql_query()返回資源。你需要的是使用mysql_fetch_assoc()。無論如何,因爲$ss將是數組的元素,您必須根據其類型(數組和非對象)使用它。因此,你應該有這樣的:

while ($ss = mysql_fetch_assoc($sql)) 
{ 
    $userid = $ss['userid']; 

    // Do other stuff 
} 

第二個是,你也沒能逃脫你的句子裏面的單引號的else

+0

您可以給出建議,爲什麼我的else語句是不是wotking,它顯示空td – user1067018

+0

@ user1067018你如果在你把var_dump($ userid)放在IF之前看到了什麼? ? –

+0

它正確地顯示了用戶ID,即3,6,8等, – user1067018

1

foreach($sql as $ss)替換爲while($ss = mysql_fetch_object($sql))。然後循環將實際上工作。您不能直接遍歷mysql結果集,但需要使用mysql_fetch_*函數之一來檢索一行。

要消除語法錯誤,請用echo 'you don\'t have permissions to go';echo "you don't have permissions to go";替換echo 'you don't have permissions to go';

+0

事實上,這不是Iam得到的問題,Iam能夠正確地獲得輸出,只有其他工作不正常。 (堆棧溢出中的輸入錯誤) – user1067018

0

這裏:echo 'you don't have permissions to go'; 替換echo 'you don\'t have permissions to go'; 它看到的don't撇號作爲字符串的結尾

+0

我已更正所有內容,它僅顯示第一行,其餘行顯示爲空。任何人都可以幫助我 – user1067018

1

我想說的問題就在這裏:

while($row = $mysql_fetch_array($sql)) 

mysql_fetch_array()是一個函數,而不是一個變量。