我创建了一个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!';
}
}
答案 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