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

'。 \ n LIMIT $ pageNav-> limitstart、$ {POSTSID ['idSearch'])? "; $ _POST ['idSearch']:" \ n ORDER BY " pageNav-> limit ");'これは、表示されたものだけでなく、すべてのページを検索するための適切な解決策です。 –

答えて

1

ifは今まで文にすることができます。あなたはexpressionとしてそれを使用しています。何も返さず、別のステートメント内で使用することはできません。

あなたが、しかし、まさにこれを行うには三項演算子を使用することができます

:。

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

$_POST['idSearch']が設定されている場合、これは」と言い、その文字列を追加し、そうでない場合は、空の文字列を追加

。なお、上記のコードだけではっきりとしたSQLインジェクションがあるので、あなたのコードを実際に見てください。誰でもあなたのデータベース上で任意のコードを実行する可能性があります。あなたの入力をサニタイズし、あなたのコードをより安全にするためのクエリ。

+0

SQL = SELECT。*、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左ジョイント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 ASe eid.id = a.stid LEFT JOIN jos_ezrealty_country ASf ff.id = a.cnid LEFT JOIN jos_ezrealty_profile AS ss ON ss.mid = a.owner LEFT JOIN jos_users AS u u ON u.id = a.checked_outここでa.id = ORDER BY a.id DESC LIMIT 0,5 –

+0

私は、それをデバッグするはずですが、私の推測では '$ _POST ['idSearch']'は設定されていますが空です。私は間違っている可能性がある。あなたは正確に多くの詳細を与えているわけではありません... – lonesomeday

+0

それは空です、空であれば何もせず、特定のものではないすべてのデータを取得します、私はハイパーリンクで投稿を得ると思いますクエリ文字列:)、thnxすべて –

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

なぜ3者演算子が悪いのですか? –

+0

@Rocket私はそうは思わないが、たくさんの開発者がいる。問題の1つの例は、事実の後に条件に操作を追加できないことです。 –

関連する問題