2012-06-12 42 views
-1

我想以表面插入數據到我的數據庫的面向對象的方式,但數據只是沒有插入。爲什麼不?從表單插入數據到數據庫與OOP

class users { 
    var $username; 
    var $password; 
    var $conection; 
    var $tablename = usertable; 

    function mysqldb() { 
     $this->conection = mysql_connect("local host", "root", "") or die(mysql_error()); 
     mysql_select_db("this->tablename"); 
    } 

    function insertdb() { 
     $query = mysql_query("INSERT INTO $this->tablename values ('', '$user', '$pass')"); 
     $result = mysql_query($query); 
     if(!$result) die("Query didn't work. " . mysql_error()); 
    } 
} 

$user1 = new users; 
$user1->username = $_POST["user"]; 
$user1->password = $_POST["pass"]; 
$user1->insertdb(); 
+1

請儘量至少輸入完整的單詞和句子。它顯示你關心:) – Ryan

+0

幾乎肯定,你的意思是連接到'本地主機',而不是'本地主機' - 不是空間被刪除。 – jedwards

+0

它是我在stalkoverflow上的第一篇文章,仍然學習根據需要的格式修改我的代碼。 –

回答

1

第一個問題是您的主機名是錯誤的。使用localhost,而不是local host

現在,你需要逃避你的數據,否則你會遇到麻煩!我建議完全拋棄你的功能mysql_learn to do prepared queries with PDO

0

你有mysql_select_db("this->tablename")

你需要mysql_select_db($this->tablename)

這至少眼前的問題,我看到。你應該檢查PDO,它能夠將數據提取到類和對象中。四處練習更好。

+0

沒有。 mysql_select_db($ string)除字符串作爲參數。在這種情況下,「$ this-> tablename」=== $ this-> tablename => true,因爲它們都計算爲字符串類型 – Yang

+1

@Rasim Fryal的代碼具有'this-> tablename'注意缺少'$'。所以你是對的,但這不是他發佈的內容。 – Cfreak

0
$this->conection = mysql_connect("local host", "root", "") 

local hostlocalhost


$query = mysql_query("INSERT INTO $this->tablename values ('', '$user', '$pass')"); 

最後兩個變量既不被定義 - 你可能是指$this->username和。你也可能會自己解決一些SQL注入漏洞 - 檢查PDO並準備好語句。如果這是針對實際的Web應用程序,請開始醃製和散列密碼。


mysql_select_db("this->tablename"); 

"this->tablename"應該是$this->tablename


你也永遠不會打電話給在第一個地方;您需要在嘗試插入數據庫之前這樣做。

$user1->mysqldb(); 
+0

謝謝你,我把本地主機改成了localhost,叫做mysqldb()和$「this-> tablename」。但仍然沒有插入數據 –

+0

@RasimFryal:請問您是否可以用新代碼更新信息?另外,請確保您打開了警告。你有什麼? – Ryan

+0

這些是警告 \t \t \t說明:使用未定義的常量用戶表的 - 在C假定 '用戶表':\ XAMPP \ htdocs中\ン\的login.php上線31 說明:未定義變量:用戶在C:\ XAMPP \ htdocs \ nn \ login.php在線22 注意:未定義變量:傳入第22行的C:\ xampp \ htdocs \ nn \ login.php 查詢無效。查詢是空的 –

1

在您創建類之後,您會調用insertdb()方法,但無法連接到數據庫。您必須先調用mysqldb()!