我猜的是一个相当简单的问题。我在函数的开头有以下代码,但它必须不正确,因为它会导致空白变为空白。如果我注释掉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变量,我只想做一些事情,否则就跳过它。
感谢。
答案 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和空字符串。