我在为一个非常小的类似WYSIWIG的应用程序中使用PHP函数时遇到了问题。以下函数确定用户是否拥有页面。它有用于调试的print语句。
function is_owned($sitename, $page_id)
{
$output = false;
$result = count(single_row_query(sprintf("SELECT page_id FROM pages WHERE sitename='%s' AND page_id='%s';", addslashes($sitename), addslashes(strval($page_id)))));
print $result;
if ($result != 0)
{$output = true; }
return $output;
}
以下是我用来调试函数的页面的输出。
SELECT sitename FROM session WHERE uid='l8rc8ssri8qr65lqvtfp174s91'
SELECT page_id FROM pages WHERE sitename='Test' AND page_id='132432';
Result: 0
The function has returned true.
如您所见,$ result的值为0,但函数仍返回true。包含了SQL语句,但问题似乎并不存在。
以下函数被称为is_owned(),但不太可能是相关的,因为它似乎是有用的。
function single_row_query($query)
{
$database_connection = open_connection();
$result = mysql_query($query);
$output = mysql_fetch_array($result);
$output = $output[0];
mysql_free_result($result);
mysql_close($database_connection);
return $output;
}
非常感谢您的协助。
编辑:此外,当测试页面返回true时,这是测试页面的输出:
! SELECT sitename FROM session WHERE uid='l8rc8ssri8qr65lqvtfp174s91' !
! SELECT page_id FROM pages WHERE sitename='Test' AND page_id='7'; !
Result: 1
The function has returned true.
答案 0 :(得分:2)
你的问题是拼写错误的结果,但这就是其他答案完全错误的原因。
PHP count
始终返回int 。具体做法是:
返回var中的元素数。如果var不是数组或具有已实现Countable接口的对象,则将返回1。有一个例外,如果var为NULL,则返回0。
无论single_row_query
函数中发生了什么,count
都会返回一个int。那时,$result != 0
和$result !== 0
或其他假定的问题之间没有实际差异。强类型比较无关紧要,因为您必须将int值与int值进行比较。
此时,您的功能正常,您的问题必须位于其他地方。
答案 1 :(得分:-1)
尝试:
if ($result !== 0) {
$output = true;
}
答案 2 :(得分:-1)
尝试此条件[已更新]
if(!empty($result))
{$output = true; }
答案 3 :(得分:-2)
var_dump($result)
而不是print $result
因为var_dump打印变量类型(print将变量转换为字符串),所以你会看到实际价值。if ($result !== 0)
进行强类型比较。