PHP函数在应返回False时返回True
我在一个非常小的类似WYSIWIG的应用程序中遇到了PHP函数的问题。以下函数确定用户是否拥有页面。它有用于调试的打印语句PHP函数在应返回False时返回True,php,Php,我在一个非常小的类似WYSIWIG的应用程序中遇到了PHP函数的问题。以下函数确定用户是否拥有页面。它有用于调试的打印语句 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($s
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.
尝试:
尝试此条件[已更新]
if(!empty($result))
{$output = true; }
var\u dump($result)
而不是print$result
,因为var\u dump打印变量类型(print将变量转换为字符串),所以您将看到实际值if($result!==0)
进行强类型比较你的问题是打字错误造成的,但这就是其他答案完全错误的原因 PHP总是返回一个int。具体来说: 返回变量中的元素数。如果变量不是数组或具有实现的可数接口的对象,则将返回1。有一个异常,如果var为NULL,则返回0 无论在
单行查询
函数中发生什么情况,计数
都将返回一个整数。此时,$result!=0和$result!==0
或其他假定问题。强类型比较并不重要,因为您必须将int值与int值进行比较
此时,您的函数是正确的,您的问题必须存在于其他地方。是否可以包含打印“函数已返回true”的代码?也许这就是问题所在。哦,德普。你完全正确,我忘了在变量上加$。抱歉,这是一个小问题。当$result为0时,它仍然返回true。该函数无权访问SQL结果,它由另一个函数处理。$result变量是SQL结果的第一行(也是唯一一行)。
if(!empty($result))
{$output = true; }