2013-04-25 55 views
-6

我試圖找到用戶名是否已經在數據庫中。出於某種原因,$ result返回false,我不知道爲什麼。我可以把事情放入數據庫中。如果有問題,我使用Fugu將代碼上傳到服務器。我有點新的PHP,所以任何幫助將是偉大的!PHP檢查數據庫中現有的條目

這裏就是查詢失敗代碼:

$dbh = new PDO('mysql:host=localhost;dbname=baseuser' . $db_users_database, $db_user, $db_pass); 
    $result = mysql_query("SELECT COUNT(username) FROM users WHERE username='$username' GROUP BY username"); 
       $num_rows = mysql_num_rows($result); 

       if ($num_rows != 0) { 
        echo "username taken"; 
       } 
+9

到底爲什麼您使用的函數''mysql_query' PDO'。他們不一起工作。如果您使用「PDO」方式,請使用所有功能「PDO」。 http://php.net/manual/en/pdo.query.php – 2013-04-25 06:19:44

+0

爲什麼人們如此粗魯,我的意思是6倒票,沒有人關心告訴/建議改善問題 – 2013-04-25 08:13:38

+0

@NoobASThreeDeveloper:呵呵?從什麼時候開始贊成改善這個問題?投票評價問題。 Downvotes不是粗魯的,它們是「粗暴」要求答案的同一個系統的一部分。你打電話問這裏粗魯的問題嗎? – hakre 2013-04-29 09:56:01

回答

2

使用PDO這樣,PDOmysql_*功能無法一起工作,你必須單獨使用它們

$sth = $dbh->prepare('SELECT COUNT(username) FROM users 
WHERE username= :username GROUP BY username'); 
$sth->bindParam(':username', $username, PDO::PARAM_STR); 
$sth->execute(); 

if ($sth->fetchColumn() > 0) { 
    echo "username taken"; 
} 
+3

謝謝!完美地工作。只有我的第二天的PHP。 – midnightflight 2013-04-25 06:37:06

+1

@AngelaChen如果你是'PHP'中的新程序員,那麼我會建議你繼續使用'PDO',因爲它可以防止SQL注入。 – 2013-04-25 06:40:36

1

你連接到PDO的表格中,然後嘗試使用 - 不建議使用的 - mysql extension進行查詢。這是行不通的。

堅持PDO,然後query與PDO,你甚至可以把它帶到一個準備好的聲明下一個級別。

例子:

$dbh = new PDO('seeyourcode'); 
$sql = "SELECT COUNT(username) 
     FROM users 
     WHERE username= :user 
     GROUP BY username"; 

// Prepare the statement 
$sth = $dbh->prepare($sql); 
$sth->bindParam(':user', $username, PDO::PARAM_STR); 

// now execute 
$sth->execute(); 

// fetch the result 
$result = $sth->fetchAll(); 
var_dump($result); 

var_dump()就在那裏給你上的物體看起來像一個感覺。你可以在那裏執行你想要的任何行動。

1

使用此:

$stmt = $dbh->prepare('SELECT EXISTS(SELECT * FROM `users` WHERE `username` LIKE :username) as `taken`'); 
$stmt->bindParam(':username', $username, PDO::PARAM_STR); 
$stmt->execute(); 

$result = $stmt->fetch(PDO::FETCH_ASSOC); 

if($result['taken']){ 
    echo "username taken"; 
} 

$stmt = null; 

此外,您使用不正確PDO。檢查manual

1

不要讓它變得複雜。使用簡單的連接方法和使用查詢像這樣:

$check_if_already = mysql_query("SELECT * FROM uxxx where id = 1113"); 

$count_total_rows = mysql_num_rows($check_if_already); 
echo $count_total_rows; 

    if ($count_total_rows > 0) { 
     echo "Not duplicate"; 
     //do your task here 
    } else { 
     echo 'Duplicate'; 
    } 
+0

**除此之外**回答:['php_mysql'](http://php.net/manual/en/book.mysql.php)擴展名是[*** deprecated ***](http: //php.net/manual/en/function.mysql-connect.php)。我建議使用['php_mysqli'](http://php.net/manual/en/book.mysqli.php)或['php_pdo'](http://php.net/manual/en/book.pdo .php)。 – BlitZ 2013-04-25 06:40:10

相關問題