2010-05-08 169 views
0

我發現了一個來自nettuts的教程,它有一個源代碼,所以試圖在我的網站實施它。它現在正在工作。但是,它沒有註冊系統,所以我正在製作一個。事情是,正如我所料,我的代碼不工作......它似乎不知道如何INSERT到數據庫中。這是將數據插入數據庫的函數。INSERT INTO表不起作用?

function register_User($un, $email, $pwd) { 
$query = "INSERT INTO users(username, password, email) 
       VALUES(:uname, :pwd, :email) 
       LIMIT 1"; 

if($stmt = $this->conn->prepare($query)) { 
    $stmt->bind_param(':uname', $un); 
    $stmt->bind_param(':pwd', $pwd); 
    $stmt->bind_param(':email', $email); 
    $stmt->execute(); 

    if($stmt->fetch()) { 
     $stmt->close(); 
     return true; 
    } else return "The username or email you entered is already in      
        use..."; 
} 

}

我已經調試在類的內部數據庫的連接,它說,它的連接。我試圖用這個方法來代替:

function register($un, $email, $pwd) 
{ 
    $registerquery = $this->conn->query(
       "INSERT INTO users(uername, password, email) 
       VALUES('".$un."', '".$pwd."', '".$email."')"); 
    if($registerquery) 
    { 
     echo "<h4>Success</h4>"; 
    } 
    else 
    { 
     echo "<h4>Error</h4>"; 
    } 
} 

它回聲「錯誤」 ...... 能否請你幫我筆點誤差在這個??? :(

+0

您是否已檢查錯誤消息的'$ this-> conn-> error'? :) – Thorarin 2010-05-08 10:34:28

+0

您將「用戶名」字段拼寫爲「用戶名」 – 2010-05-08 10:38:04

回答

4

在第一個例子,它看起來像這條線可能是問題:

if ($stmt->fetch()) { 

通常,數據操作查詢(INSERT,UPDATE,DELETE等),不返回結果集,它可以。被提取一般情況下,$stmt->execute();函數將返回你正在尋找的真或假值

在第二個例子,你拼寫爲「用戶名」錯誤:

INSERT INTO users(uername, password, ...

1

我希望在上面的代碼中沒有錯誤...最好把你的查詢寫成一個字符串並把它作爲參數發送。有些時候,串聯字符串及其參數變量可能會出現問題。

另請檢查字段名是否拼寫錯誤。

0

第一示例中,

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email) 
      LIMIT 1"; 

卸下 「LIMIT 1」 時,應該是

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email)"; 

「限制」 是不是查詢構建體的一部分。有關更多信息,請參閱INSERT USAGE DOCUMENTATION

第二個例子,

前面已經提到的,你對「用戶名」字段中的拼寫錯誤。你用「uername」代替。這將觸發「未知列」錯誤。

作爲最後一點,請務必閱讀錯誤消息,因爲這是您第一次找到問題線索的地方。此外,嘗試通過數據庫客戶端測試您的查詢構造,以確保您沒有錯誤。

+0

LIMIT僅適用於SELECT語句(從INSERT到SELECT)並且特定於PostgreSQL。 – 2010-05-12 19:50:57

0

嗨,感謝所有幫助! :-) 我會研究我的第一種方法,並嘗試應用您的更正,如果我找到時間... 現在我正在使用第二種方法,顯然,我拼錯了一個字段。

再次感謝!

-1

試試這個。

mysql_query("INSERT INTO `users` (`username`,`password`,`email`) VALUES ('$user','$pass','$email')