2011-12-21 151 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

相关问题