2014-09-30 48 views
1

我试图做一个检查,显示内容或不:PHP检查如果MySQL选择存在空

$stmt = $mysqli->prepare("SELECT * 
     FROM friends 
     WHERE friendID = ? 
     AND userID = ?"); 

$stmt->bind_param('ii', $id, $connectedUserID); 
$stmt->execute(); 

if (login_check($mysqli) == true && $stmt->num_rows > 0) { 
    //do something 
} else echo 'you are not allowed to be here'; 

我要检查是否有与两个ID的任何行。

但它不工作,我尝试了很多不同的方式,如使用===或!== false。

任何帮助?

Ty!

+0

如上所述,bind_param方法不运行uery,你必须使用** execute **方法来运行你的builded查询 – kitensei 2014-09-30 08:16:10

+0

谢谢,那是正确的方法吗? – 2014-10-01 04:34:18

回答

1

最可能的登录检查不会返回true,以下内容应该足够:

if(isset($id, $connectedUserID)){ 
    $stmt = $mysqli->prepare("SELECT * 
      FROM friends 
      WHERE friendID = ? 
      AND userID = ?"); 

    $stmt->bind_param('ii', $id, $connectedUserID); 
    $stmt->execute(); 

    $stmt->execute(); 
    if ($stmt->num_rows > 0) { 
     //do something 
    } else{ 
     echo 'you are not allowed to be here'; 
    } 
}else{ 
    //redirect to login 
} 

如果用户需要登录,那么这不是检查的地方,它应该在此查询之前。

+0

是的,用户需要登录,但是如果$ connectedUserID = $ _SESSION ['user_id'];是空的他将无法通过if。那就够了,对吧? – 2014-10-01 05:21:39

+0

是的,这个逻辑有一个缺陷,因为你需要连接来获取这个参数的值,所以应该在运行查询之前检查 – meda 2014-10-01 05:23:08

+0

确定添加了如果使用login_check函数......我不知道是否调用太多次这个函数可能会破坏它或者什么:P – 2014-10-01 05:31:09