我正在尝试创建一个将检查数据库中数据的函数。如果结果为空,请继续执行代码。如果是,请中止。
以下是我的代码示例。
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 ......
答案 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>';
}
}