Как использовать переменные isset и null в функциях - PullRequest
0 голосов
/ 30 октября 2010

У меня довольно простой вопрос. У меня есть следующий код в начале моей функции, но он не должен быть правильным, потому что это приводит к тому, что пробел становится пустым. Если я закомментирую оператор IF, все будет хорошо.

Что я делаю не так?

Извините, это, наверное, очень просто ...

function get_entries($order = 'newest', $slug = null) {

        $wheresql = '';
        if (isset($slug)) {  
            $wheresql = 'WHERE entries.category_id = (SELECT categories.category_id FROM categories WHERE categories.category_slug = "'. $slug .'")'
        }

По сути, я просто хочу что-то сделать, если пользователь предоставил переменную $ slug, в противном случае пропустите это.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 30 октября 2010

try if(!is_null($slug)){...} (не забывайте знак '!' Перед is_null (), потому что вам нужно "not is null")

также, MySQL запрос не позволяет использовать двойные кавычки в качестве строковых кавычек, поэтому вы должны использовать

"WHERE entries.category_id = (SELECT categories.category_id FROM categories WHERE categories.category_slug = '". mysql_real_escape_string($slug) ."')"

Как вы видите, я изменяю кавычки на двойные и наоборот, также не забывайте об экранировании $ slug для предотвращения SQL-инъекций!

2 голосов
/ 30 октября 2010

Я подозреваю, что вы ищете is_null()

 function get_entries($order = 'newest', $slug = null) {

        $wheresql = '';
        if (!is_null($slug)) {  
            $wheresql = 'WHERE entries.category_id = (SELECT categories.category_id FROM categories WHERE categories.category_slug = "'. $slug .'")';
        }
2 голосов
/ 30 октября 2010

В строке $wheresql = отсутствует точка с запятой, что вызывает ошибку синтаксического анализа.

Чтобы увидеть эти ошибки, необходимо включить отчет об ошибках: error_reporting(E_ALL); в заголовке скрипта выполнитобмануть.

1 голос
/ 30 октября 2010

Обычно !empty() - это идиома, которую вы должны использовать, а не isset(). Потому что isset только звонит true для значений NULL, где вы также хотите считать FALSE и пустую строку в.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...