2010-12-01 44 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 
}