测试Select Query是否找到结果

时间:2010-12-01 12:04:47

标签: php mysqli

嗨,我是PHP的新手,如果有人能告诉我这段代码中哪里出错了,我真的很感激。 为了将代码放在上下文中,我使用facebook来验证用户身份并将他们的注册详细信息添加到我的应用数据库中。 在以下代码中,打算检查用户是否已存在于数据库中,如果不存在则添加它们。 出于某种原因,我无法测试$result

我检查了查询变量,它们没有问题地回显

@ $con = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno()){
    echo 'Error: Could not connect to the database. Please try again later';
    exit;
}

$query = "SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid ='".$uid."'";

$result = $con->query($query);


if($result === FALSE){
    $insertquery = "INSERT INTO ('oauth_provider', 'oauth_uid', 'username') VALUES ('facebook', '".$uid."', '".$username."')";
    $result = $con->query($query);
}

我应该添加我使用旧的mysql方法工作的代码。但我已经读过,最好使用面向对象的mysqli方法。

这是旧的工作代码

if($session){
$con = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database');

if(!$con || !$select_db){
    die('Could not connect: ' . mysql_error());
}
else{
    echo "connected to database and table selected";
}

$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user['id']);
$result = mysql_fetch_array($query);

if(empty($result)){
    $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user['id']}, '{$user['name']}')");
    $query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
    $result = mysql_fetch_array($query);
}

}

感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:2)

使用MySQLi_Result::num_rows property获取MySQLi_Result object的行数:

if ($result->num_rows > 0) {
    // …
}

答案 1 :(得分:2)

可以这样简单地完成:

if($result)
{
// Do code when there are results
} else {
// Do code when there are no results
}

答案 2 :(得分:1)

if( $result instanceof mysqli_result && $result->num_rows==0)

分解:

$result instanceof mysqli_result

这是为了确保查询通过并返回结果

$result->num_rows==0

这是检查匹配任何现有记录的先前查询