2012-02-20 52 views
0

我想實現準備好的語句,但由於某種原因,我無法創建用戶。請注意,我已經能夠在舊的傳統定義[mysql_connect和...]中創建具有相同值的用戶了嗎?某些機構可以幫助我確定我犯的錯誤嗎?php/mysql使用準備好的語句回顧

require_once 'config.php'; 
class AuthDb { 
private $db; 
function __construct(){ 
    $this->db = mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME) 
       or die('could not connect');   
} 

function __destruct(){ 

    $this->db->close(); 
    unset($this->db); 
} 

public function createUser($name, $email) { 

    $query = "INSERT INTO myUsers (name, email) VALUES (?, ?)"; 
    $stmt = $this->db->prepare($query); 
    $stmt->bind_param("ss", $name, $email); 
    if ($stmt->execute()){ 
     return true; 
    } 

    return false; 

    } 

} 

$create = new AuthDb(); 
$name = "bing"; 
$email = "[email protected]"; 
$test = $create->createUser($name, $email); 
+1

'$這個 - > DB = mysqli的(DB_SERVER' - ?你忘在這裏了'new' – VolkerK 2012-02-20 15:49:28

+0

mysqli的是一個功能,我爲什麼需要它實例 – 2012-02-20 16:10:44

+0

我只是好奇,因爲有一個?類名爲'mysqli'和'config.php'聽起來不像它會提供一個稱爲mysqli(...);-)的函數 – VolkerK 2012-02-20 16:16:09

回答

0

嘗試更多的錯誤處理/日誌記錄。

define('DEBUG_LOG', true); 
function onError($general, $details) { 
    echo '<pre>', htmlentities($general), "</pre>\n"; 
    if (defined('DEBUG_LOG') && DEBUG_LOG) { 
     echo '<pre>', htmlentities($details), "</pre>\n"; 
     echo '<pre>'; debug_print_backtrace(); echo "</pre>\n"; 
    } 
    die; 
} 

class AuthDb { 
[...] 
    public function createUser($name, $email) { 
     $query = "INSERT INTO myUsers (name, email) VALUES (?, ?)"; 
     $stmt = $this->db->prepare($query); 
     if (!$stmt) { 
      onError('database error', $this->db->errno .': '.$this->db->error); 
      return false; 
     } 

     $rc = $stmt->bind_param("ss", $name, $email); 
     if (!$rc) { 
      onError('database error', 'bind failed'); 
      return false; 
     } 

     if (!$stmt->execute()) { 
      onError('database error', $stmt->errno.': '.$stmt->error); 
      return false; 
     } 

     return true; 
    } 
+0

感謝您的幫助,我終於可以將名稱和電子郵件添加到數據庫中。這是一個很好的調試機制,我必須學習更多的OOP,特別是用於調試。 – 2012-02-20 17:15:54