PHP函数返回true或false

时间:2015-05-20 19:29:56

标签: php if-statement return-value

我正在尝试创建一个将检查数据库中数据的函数。如果结果为空,请继续执行代码。如果是,请中止。

以下是我的代码示例。

function check_if_blocked(){
 global $wpdb;
 $user = '1';
 $results = $wpdb->get_results("SELECT * FROM mytable WHERE user = $user");
 if(empty($results)){
   $var = false;
  } else {
   $var = true;
  }
 return $var;
}

函数check_if_blocked将在插件中使用多个。

以下是我计划如何使用check_if_blocked()..

的示例
function msg_form(){
if(check_if_blocked(){
  echo '<form action="" method="post">
  <input type="text" name="msg">
  <input type="submit" name="submit" value="send">';
  }
 }

无论我如何切换true,false,甚至是(!check_if_blocked ......

2 个答案:

答案 0 :(得分:1)

您试图返回错误的值,如果查询成功,get_results将返回true,如果找到匹配则不会返回true,因此,即使找不到匹配的记录,它也可能返回true,请尝试以下操作:

function check_if_blocked()
 {
  global $wpdb;
  $user = '1';
  $results = $wpdb->get_results("SELECT * FROM mytable WHERE user = $user");
  if(!$results) {return false;}  // query failed, no way to know if there are matching records.
  $numrows = count($results); // query worked, now, check if there are matching records.
  if (is_int($numrows) && $numrows) {$var = true;} else {$var = false;}
  return $var; // return the result.
 }

现在,只有存在一个或多个匹配记录时,该函数才会返回true。

此外,这里有语法错误:

if(check_if_blocked(){

应该是:

if(check_if_blocked()){

答案 1 :(得分:0)

在大家的建议之后。我终于开始工作了。这是我的代码。

function check_if_blocked($blocked){
global $wpdb;
$user = '1';
$user2 = '2';
$results = $wpdb->get_results("SELECT * FROM mytable WHERE blocked = $user AND blocker = $user2");
if(empty($results)){
$blocked = 'not_blocked';
} else {
$blocked = 'is_blocked';
}
}

function msg_form(){
if(check_if_blocked($blocked) == 'not_blocked){
echo '<form action="" method="post">
<input type="text" name="msg">
<input type="submit" name="submit" value="send"></form>';
}
}