【问题标题】:PHP function return true or falsePHP 函数返回 true 或 false
【发布时间】:2015-05-20 19:29:55
【问题描述】:

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

这是我的代码示例。

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">';
  }
 }

不管我如何切换真、假,甚至 if(!check_if_blocked...

【问题讨论】:

  • 问题#1:$user 不存在于scope of your function 中,考虑将其作为argument 传递
  • Regradless of "Problem #1" 代码不起作用。
  • 我不知道答案,但所有这些代码:if(empty($results)){ $var = false; } else { $var = true; } return $var; 可能会更改为return !empty($results);
  • 感谢您的有用提示。飞溅58。
  • wpdb 来自 wordpress 吗?我问是因为 wordpress 中的用户表通常没有名为“用户”的列。我怀疑这是原因,但可能值得检查。

标签: php if-statement return-value


【解决方案1】:

您尝试返回错误的值,如果查询成功,get_results 将返回 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()){

【讨论】:

  • 警告:mysql_num_rows() 期望参数 1 是资源,给定数组。
  • 我重新编辑了我的回复以匹配您使用的数据库系统,现在试试吧。
【解决方案2】:

在大家的建议下。我终于让它工作了。这是我的代码。

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>';
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2018-12-29
    • 2016-04-16
    • 2013-06-29
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多