2011-12-21 70 views
1
$query = "SELECT a.*, cc.name AS category, dd.ezcity AS proploc, ee.name AS statename, ff.name AS cnname, ss.dealer_name AS propseller, u.name AS editor" 

. "\n FROM #__ezrealty AS a" 

. "\n LEFT JOIN #__ezrealty_catg AS cc ON cc.id = a.cid" 

. "\n LEFT JOIN #__ezrealty_locality AS dd ON dd.id = a.locid" 

. "\n LEFT JOIN #__ezrealty_state AS ee ON ee.id = a.stid" 

. "\n LEFT JOIN #__ezrealty_country AS ff ON ff.id = a.cnid" 

. "\n LEFT JOIN #__ezrealty_profile AS ss ON ss.mid = a.owner" 

. "\n LEFT JOIN #__users AS u ON u.id = a.checked_out" 

. (count($where) ? "\n WHERE " . implode(' AND ', $where) : "") 

. if (isset ($_POST['idSearch'])) 

    . { " WHERE a.id = " . $_POST['idSearch'] ; } 

. "\n ORDER BY ". $order 

. "\n LIMIT $pageNav->limitstart, $pageNav->limit" 

; 

我不從這裏獲得錯誤的語法:(,,並保持if語句之前返回相同的錯誤意外T_IF解析錯誤:語法錯誤,意想不到的T_IF

+0

'。 (!$ empty($ _ POST ['idSearch'])?「WHERE a.id =」。$ _POST ['idSearch']:「\ n ORDER BY」。$ order。「\ n LIMIT $ pageNav-> limitstart,$ pageNav-> limit「);'這是在所有頁面中搜索的正確解決方案,不僅僅是顯示的一個 – 2011-12-22 08:38:43

回答

1

if永遠只能是一個聲明:您使用它作爲一個expression。它不會返回任何內容,並且不能在其他語句中使用。

你可以,但是,使用三元運算符來做到這一點:。

. (isset ($_POST['idSearch']) ? " WHERE a.id = " . $_POST['idSearch'] : '') 

這是說「如果$_POST['idSearch']設置,添加字符串,否則,加空字符串

注意你應該真的看看你的代碼,因爲在上面發佈的代碼中有一個明顯的SQL注入。任何人都可以在你的數據庫上執行任意代碼。確保清理你的輸入,並且最好採用預準備語句和參數化查詢以使您的代碼更安全。

+0

SQL = SELECT a。*,cc.name AS類別,dd.ezcity AS proploc,ee.name AS狀態名稱,ff.name AS cnname,ss.dealer_name AS propseller,u.name AS編輯器FROM jos_ezrealty AS LEFT JOIN jos_ezrealty_catg AS cc ON cc.id = a.cid LEFT JOIN jos_ezrealty_locality AS dd ON dd.id = a.locid LEFT JOIN jos_ezrealty_state AS ee ON ee.id = a.stid LEFT JOIN jos_ezrealty_country AS ff ON ff.id = a.cnid LEFT JOIN jos_ezrealty_profile AS ss ON ss.mid = a.owner LEFT JOIN jos_users AS u ON u.id = a.checked_out WHERE a.id = ORDER BY a.id DESC LIMIT 0,5 – 2011-12-21 16:06:48

+0

我不太清楚我如何「米應該調試,但我的猜測是'$ _POST ['idSearch']'設置,但空。我可能是錯的。你沒有給出很多細節... – lonesomeday 2011-12-21 16:11:31

+0

它是空的,它假設它是空的什麼也不做,並檢索所有的數據不是特定的,我想我會通過超鏈接得到帖子和查詢字符串:),thnx全部 – 2011-12-21 16:14:19

3

拆下(點)。因爲if語句本身不是一個字符串,你不能只是串連它

2

不要這樣:

. if (condition) { value_if_true; } 

而是做到這一點:

. (condition ? value_if_true : value_if_false) 
0

我相信你想要把它變成一個三元運算符:

. (count ...) 
. (isset($_POST['idSearch']) ? ' WHERE a.id = ' . $_POST['idSearch'] : '') 
. "\n ORDER BY" ... 
+0

爲什麼三元運算符是邪惡的? – 2011-12-21 16:16:29

+0

@火箭我不認爲這是事實,但有很多開發者都這麼做。一個問題的例子是,事實之後,您無法將操作添加到條件中。 – 2011-12-21 16:18:23

相關問題