如何在函数中使用isset和null变量

时间:2010-10-29 20:14:13

标签: php sql function null if-statement

我猜的是一个相当简单的问题。我在函数的开头有以下代码,但它必须不正确,因为它会导致空白变为空白。如果我注释掉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 个答案:

答案 0 :(得分:2)

您在$wheresql =行中缺少分号,导致解析错误。

您需要打开错误报告才能看到这些错误:脚本头部的error_reporting(E_ALL);可以解决这个问题。

答案 1 :(得分:2)

我怀疑你要找的是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 :(得分:2)

尝试if(!is_null($slug)){...}(不要忘记is_null()之前的'!'符号,因为你需要“not is null”)

另外,mysql查询不允许使用doublequote作为字符串引号,因此必须使用

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

如你所见,我将引号更改为双引号,反之亦然,也不要忘记转义$ slug以防止SQL注入!

答案 3 :(得分:1)

通常!empty()是你应该使用的习语,而不是isset()。因为对于NULL值,isset只响铃,你大多数时候也想要计算FALSE和空字符串。