2013-03-06 166 views
0

我有一個問題,將電子郵件,密碼和名稱插入到mySQL數據庫。 我準備了一個獨立的類來連接我的數據庫。但是當我把我的名字,電子郵件和密碼放在我的表單中(這是在另一個php文件中),那麼我的數據庫中沒有任何東西。 在這裏你可以找到我的代碼。我已經嘗試了我的數據庫中的插入語句,並且工作。無法連接到數據庫,無法插入數據庫

<?php 
include_once("classes/User.class.php"); 
include_once("Tweet.php"); 

class Db 
{ 
    private $m_sHost="localhost"; 
    private $m_sUser="root"; 
    private $m_sPassword=""; 
    private $m_sDatabase="phples"; 
    public $conn; 

    public function __construct() { 
    $this->conn=new mysqli($this->m_sHost,$this->m_sUser,$this->m_sPassword,$this->m_sDatabase); 
    if(isset($m_bVerzend)) { 
     if(!$conn->connect_errno) { 
     $sql = "INSERT INTO 'tbltweet' ('Name', 'Email', 'Password') VALUES ('$m_sName', '$m_sEmail', '$m_sPassword');"; 
     $conn->query($sql); 
     } 
    } 
    } 
} 
?> 
+0

您是否收到任何錯誤訊息?如果是這樣,請編輯您的帖子以包含它們。謝謝。 – bernie 2013-03-06 17:45:39

+1

你必須逃避數據庫查詢中存在的變量!! 11 – RiaD 2013-03-06 17:52:54

回答

1

在構造函數中,你使用了大量的未在該函數的範圍設置變量:

if(isset($m_bVerzend)){ 
    if(!$conn->connect_errno) 
    { 
     $sql = "INSERT INTO 'tbltweet' ('Name', 'Email', 'Password') VALUES ('$m_sName', '$m_sEmail', '$m_sPassword');"; 
     $conn->query($sql);} 
    } 

所有變量,如$m_bVerzend$m_sName等只是不確定。

php manual有關於可變範圍的更多信息。

順便說一句,你還應該使用預處理語句和綁定變量,而不是在你的sql語句中轉儲你的變量以防止sql注入問題。

0

變量$ m_bVerzend,$ m_sName,$ m_sEmail和$ m_sPassword在函數中不存在。作爲標準,PHP的變量被認爲是本地範圍,除非另有說明。

我會發送值作爲構造函數的參數,或者只是使用構造函數實例化連接,然後使用不同的過程來接收參數,準備SQL語句並執行查詢。