2012-11-09 83 views
0

我看了很多其他問題,但我找不到自己的答案。 這裏是我的語法錯誤(unexpeted T_IF):PHP解析錯誤:語法錯誤,意外T_IF

while(($rij1 = mysql_fetch_object($result1)) 
and(if ($voornaam=NULL) { 
      $rij2 = ' ';} 
elseif($voornaam!=NULL){ 
      $rij2 = mysql_fetch_object($result2);}) 

我看了看語法前行,但我找不到什麼是錯的... 是否有人知道嗎?

+1

那裏的'和'和'if'是什麼? '和'期望表達式作爲它的操作數,而不是語句。你想做什麼? –

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

4

嘗試重寫你的代碼爲:

while ($rij1 = mysql_fetch_object($result1)) 
{ 
    if ($voornaam === NULL) 
    { 
     $rij2 = ' '; 
    } 
    else 
    { 
     $rij2 = mysql_fetch_object($result2); 
    } 
} 

編輯:第一if修正你的條件,如@andrewsi發現 - =是賦值運算符,所以之前你的代碼被改變$voornaamNULL,然後檢查如果結果評估爲true(當然,它永遠不會 - 因此第二個塊將始終執行)

在您的原始代碼中,您使用的是and運算符 - 大概已經看到它在某些井中使用意思是編碼不好的例子,比如mysql_connect(...) or die('an error occurred');

該例中發生的事情是檢查第一條語句的結果 - mysql_connect()。如果它的計算結果爲真,則第二條語句從不執行,但如果它的計算結果爲假,則執行第二條語句 - die('an error occurred');。正如你剛發現的那樣,這種模式很混亂,並且最好避免。

+2

if語句應該是'if($ voornaam == NULL){' – andrewsi

+0

+1正確縮進使得代碼更具可讀性 – Arjan

+0

謝謝大家,哈哈對不起,我不經常這樣做......但現在我得到了一個第22行的語法錯誤,一個意外的'{'(第22行是這裏的第一行) – user1813397

相關問題