2014-01-06 7 views
0

У меня есть этот код:MySQL, если оператор с переменной

$post = 0; 
$rows = $wpdb->get_results("select * from table where if('".$post."' != 0, id = '".$post."', id != 0) "); 

Если $post не имеет значения 0, я должен взять все строки, которые имеют идентификатор $post, и если $post имеет идентификатор 0, мне нужно принимать все строки, которые не имеют идентификатор 0, но не возвращает никакого результата

+0

вам понадобится троянец ... –

ответ

2

Если заявления не могут быть использованы для изготовления частей запроса динамического попробовать вместо этого:

"select * from table where " . ($post ? "id = $post" : "id != 0") 

Это предполагает, что $post не является пользователем. Если это вам, вам нужно будет убедиться, что это число, а не злонамеренное.

+0

@dontHaveName Добро пожаловать. – Jim

+0

+1 для «не злой» –

0

Вместо того чтобы делать:

$post = 0; 

$rows = $wpdb->get_results("select * from table where if('".$post."' != 0, id = '".$post."', id != 0) "); 

Первая попытка сделать таким образом:

$sql = "select * from table where if('".$post."' != 0, id = '".$post."', id != 0)"; 

echo "$sql"; 

скопировать из положить и попробовать запустить его в реальной базе данных вручную. Если он покажет результат, он также будет работать и в вашем коде wp.

спасибо.

Смежные вопросы