0

我一直在思考这个问题,我想看看查询是否有任何结果,如果它没有返回任何结果,我想做点什么。

PHP:

<?php
session_start();
$host = "localhost";
$user = "root";
$passw = "";
$con = mysql_connect($host, $user, $passw);


if (!$con)
{
    die('Could not connect: ' . mysql_error());
}
$json = $_REQUEST['json'];
$json = stripslashes($json);
$jsonobj = json_decode($json);

$me = $jsonobj -> me;
$other = $jsonobj -> other;
mysql_select_db("tinyspace", $con);
$result = mysql_query("SELECT * FROM friends WHERE (user_id = '" .$me. "' AND user_id2 = '" .$other. "') OR (user_id2 = '" .$me. "' AND user_id1 = '" .$other. "')");

if(mysql_num_rows($result) > 0)
{

}

但是,if 语句一直给我带来问题。
有什么建议吗?

4

5 回答 5

1

只是为了确定,您命名了多少列userid?用户ID,用户ID1,用户ID2?你的意思user_id1是代替user_id下面的行吗?

$result = mysql_query("SELECT * FROM friends WHERE (user_id = '" .$me. "' AND user_id2 = '" .$other. "') OR (user_id2 = '" .$me. "' AND user_id1 = '" .$other. "')");

如果是这样,也许这就是您没有获取任何结果的原因。

编辑:

$result = mysql_query("SELECT * FROM friends WHERE (user_id1 = '" .$me. "' AND user_id2 = '" .$other. "') OR (user_id2 = '" .$me. "' AND user_id1 = '" .$other. "')");
于 2012-10-18T14:21:33.017 回答
0

你应该试试

<?php 
if($result == false){
   //what you want to do if the query returns nothing
}else{
   //handle the result
}

对于那些认为我的答案不正确或与所问内容相反的人,请非常仔细地从头开始阅读问题。

于 2012-10-18T14:21:18.580 回答
0

mysql_num_rows()可以用于检查您是否有结果,并且应该在您的示例中工作..

但是,如果您的调用 mysql_num_rows()没有按预期工作(即始终为假),则几乎总是归结为查询问题。 mysql_num_rows()需要一个结果资源,如果您的查询有问题,mysql_query 将返回 false。

您可以将 mysql_query() 调用修改为

mysql_query("sql here") or die(mysql_error());

如果错误出在查询中,那应该会让您知道。一旦您检查了查询是否按预期工作,您的 mysql_num_rows() 将开始正常运行。

此外,不推荐使用 mysql_ 函数,您应该查看 Prepared Statements http://php.net/manual/en/pdo.prepared-statements.php

于 2012-10-18T14:23:54.210 回答
0
$result = mysql_query("SELECT * FROM `friends` WHERE (`user_id1` = '" .$me. "' AND `user_id2` = '" .$other. "') OR (`user_id2` = '" .$me. "' AND `user_id1` = '" .$other. "')");
于 2012-10-18T20:25:27.173 回答
-1

简单地回答您的问题,虽然您的代码似乎可能容易受到攻击,但它应该按照您的意图行事。这是我在连接类中使用的

public function makeQuery(){
 if($result = mysqli_query($this->link, $this->sql)){
     if(mysqli_num_rows($result) != 0){
         while($r = mysqli_fetch_array($result)){
             $return[] = $r;
         }
         mysqli_free_result($result);
         return $return;
     }else{
         return 0;
     }
 }else{
     // db error here
 }

}

这假设您为 $sql 和 $link 提供了一些值......但是您可以检查整数返回或数组返回。如果它是一个整数 (0),它没有行,一个数组将是返回的行。如果有错误,它将落入错误逻辑(在这种情况下,我给自己发了一封电子邮件)。

于 2012-10-18T14:31:19.873 回答