2010-12-01 45 views
1

您好我是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); 
} 

} 

任何帮助,您可以给我认识。

+1

如果($结果=== FALSE){ 可能成为如果(!$结果){ – benhowdle89 2010-12-01 12:08:04

+0

如果($结果 - > num_rows()== 0)应该可以工作。 – Gazler 2010-12-01 12:09:24

回答

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

向下突破:

$result instanceof mysqli_result 

这是为了确保查询去t hrough并将结果返回

$result->num_rows==0 

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

2

使用MySQLi_Result::num_rows property获得的行的MySQLi_Result object数量:

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

@Charlie Pigarelli:willmcneilly试图将旧的程序代码移植到MySQLi面向对象的代码中。而`MySQLi_Result :: num_rows`总是一个数字。 – Gumbo 2010-12-01 12:25:13

+0

对,我没有注意到第一个代码:通过手机浏览。 – Shoe 2010-12-01 12:26:31

2

这是可以做到简单:

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