2012-02-20 12 views
0

私は準備済みの文を実装しようとしていますが、何らかの理由でユーザを作成できません。注意してください、私はすでに古い伝統のfation [mysql_connect and ...]で同じ値を持つユーザを作成することができました。php/mysql oop prepared statement reviewを使用しています

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

'ます$ this->デシベル= mysqliの(DB_SERVER' - あなたがここに' new'を忘れた – VolkerK

+0

mysqliのが関数である、なぜ私はそれをインスタンス化する必要があるだろう –

+0

があるので、私はちょうど興味がありました? 'mysqli'と' config.php'というクラスはmysqli(...)という機能を提供するようには聞こえませんでした。 – VolkerK

答えて

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、特にデバッグのために学ばなければなりません。 –

関連する問題