我选择的PHP函数无法正常工作

时间:2014-06-13 15:03:57

标签: php mysql web-services

我创建了一个web服务,并且我调用了一个函数来确认用户,但每次我调用该函数时,我都会收到"注册已确认"消息,即使我发送错误的vercode,这是我的函数实现,考虑ckey是常量而不是changable和vercode对每个用户都是可变的,我认为问题是关于mysql指令。

// RPC method 2 (confirm user)
 function confuser($ckey, $vercode) {
    $db = mysql_connect("localhost","root");
     if(!$db){
      return 'Error: cannot open the connection';
      exit;
    }

     mysql_select_db('user_info');
      $query = "select * from personal where vercode='".$vercode."' and ckey='".$ckey."' ";
        $result = mysql_query($query, $db);
         if($result){
             return 'registration confirmed';
             } 
             else{
                 return 'wrong verification , send it again!';
             }
 }

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

if(mysql_num_rows($result) > 0){
    return 'registration confirmed';
} 
else{
    return 'wrong verification , send it again!';
}

答案 1 :(得分:0)

mysql_query()将在任何成功查询时返回结果句柄。这包括返回ZERO行的查询。零行结果仍然是有效结果,它恰好没有任何内容。零行查询不会得到“错误”返回。

您需要检查找到的行数,例如

$result = mysql_query(...);
if (!$result) {
   die(mysql_error()); // in case something did blow up
}
if (mysql_num_rows($result) == 0) {
    ... wrong verification ...
}

答案 2 :(得分:0)

mysql_select_db('user_info') or die(mysql_error());
$query = "select * from personal where vercode='$vercode' and ckey='$ckey'";
$result = mysql_query($query, $db) or die(mysql_error());
if(mysql_num_rows($result) > 0)
    return 'registration confirmed';      
return 'wrong verification , send it again!';

请注意,您需要保护变量$ vercode和$ ckey。 mysql_real_escape_string()曾经是转义方法,但现在是mysql_real_escape_string(),你使用的大多数函数都将在PHP 5.5.0开始时弃用。或者,您可以使用PDO prepared statements