2015-11-13 73 views
0

我是SQL和PHP的新手。我的目標很簡單:檢查數據庫中是否存在電子郵件地址。我正在使用以下代碼:Mysqli bind_result錯誤

 $email = [email protected];  
     $conn = new mysqli("localhost", "root", "", "mysite"); // Create connection 
     if ($conn->connect_error) { // Check connection 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $stmt = $conn->prepare("SELECT * FROM contacts WHERE email = ?"); 
     $stmt->bind_param("s", $email); 
     $stmt->execute(); 
     $stmt->bind_result($email); 
     $stmt->store_result(); 
     $result = $stmt->num_rows; 

     echo $result; 

每當我收到一個錯誤。它說我在bind_result中使用了錯誤的參數數量。它是如何的?

+0

哦..我忘了。這是一條錯誤消息:bind_result():綁定變量的數量與預準備語句中的字段數不匹配 – Fusion

回答

1

如果你是新手,我會建議使用PDO而不是mysqli。

至於你的錯誤:你select *列但只綁定一個。 您可以將查詢更改爲select email,或者取消綁定結果集: 如果您只想檢查是否存在電子郵件,則只需要輸入行數。

+0

你是一個殺手!謝謝。這是PDO更容易處理或什麼?在任何情況下,我都會關注一下。 – Fusion

+0

不客氣!是的,我發現它更簡單 - 它更標準,並且它與數據庫無關,因此您可以通過更改[DSN](http://php.net/manual/en/pdo.construct)從Mysql更改爲PostgreSQL或SQLite .php)(儘管不是所有查詢都可以兼容),而無需更改任何代碼。雖然它與mysqli非常相似,但使用起來可能更簡單。 – Kenney