2012-02-04 67 views
-1

是否真的在用戶註冊後,爲他創建一個sql表來存儲他的帖子? 我把這個插入到我的頁面後,在mysql中使它類似。數據庫與名稱相同,但第一次登錄時會創建表名。用戶和帖子數據庫問題

class Users 
{ 
    var $username="root"; 
    var $password="pass"; 
    var $database="InsertIntoStackOverflow"; 
    var $table_name=""; 
    public function Users($username) 
    { 
     $table_name=$username."_tb"; 
     echo $table_name."<br/>"; 
     mysql_connect(localhost,$username, $password) or die("unable to connect to database ".mysql_error()); 
     echo $database."<br/>"; 
     mysql_selectdb($database) or die("unable to select db ".mysql_error()); 
     $query="CREATE TABLE ".$table_name." (id tinyint(4) NOT NULL AUTO_INCREMENT, title VARCHAR(128) NOT NULL, date_post VARCHAR(100), date_edit VARCHAR(100), post_content TEXT NOT NULL)"; 
     mysql_query($query) or die("Unable to create table. ".mysql_error());   
    } 
} 

但它只顯示table_name和一個錯誤,數據庫名稱不顯示。誤差不選擇數據庫/

編輯

該類電話後,他報名參加 我也有一個功能postApost但是當我做

ob_start(); 
session_start(); 
require("Users_DB.php"); 
$name=$_SESSION['user']; 
echo 'Welcome '.$name; 
$username=new UserDB($name); 

沒有表創建

+0

喔.....什麼是'UserDB'實際?我看到你的班級名稱是'Users'。 – 2012-02-04 09:57:59

+0

哦,我真的忘了在發帖之前先編輯它。你太好了。 – user1058272 2012-02-04 10:07:18

+0

查看我的最終答案 – 2012-02-04 10:18:45

回答

1

兩個同名變量$username。使用$this來訪問類的變量。與localhost缺少引號(「),它必須是字符串類型參數,並且此代碼無法在數據庫上創建表格,因爲您在代碼上使用了AUTO_INCREMENT,但忘記提及該代碼爲PRIMARY KEY。我認爲以下代碼可以幫助您。

class Users 
{ 
    var $username="root"; 
    var $password="pass"; 
    var $database="InsertIntoStackOverflow"; 
    var $table_name=""; 

    function __construct($user_name) 
    { 
     $this->table_name=$user_name."_tb"; 
     echo $this->table_name."<br/>"; 
     mysql_connect("localhost",$this->username, $this->password) or die("unable to connect to database ".mysql_error()); 
     echo $this->database."<br/>"; 
     mysql_selectdb($this->database) or die("unable to select db ".mysql_error()); 
     $query="CREATE TABLE ".$this->table_name." (id tinyint(4) NOT NULL AUTO_INCREMENT, title VARCHAR(128) NOT NULL, date_post VARCHAR(100), date_edit VARCHAR(100), post_content TEXT NOT NULL, PRIMARY KEY (id))"; 
     mysql_query($query) or die("Unable to create table. ".mysql_error());   
    } 
} 

,您可以通過以下方式使用此類:

$clsName = new Users('username'); 
+0

謝謝,我認爲這取決於與PHP pople合作的版本。你的版本並不新鮮。它在我的PHP沒有qode罰款。 – user1058272 2012-02-04 09:29:44

+0

哦,謝謝,我忘記了$ THIS – user1058272 2012-02-04 09:40:09

+0

你知道我怎麼能傳遞一個字符串給構造函數嗎? – user1058272 2012-02-04 09:41:12

1

創建一個表:

CREATE TABLE Posts (
    id TINYINT(4) NOT NULL AUTO_INCREMENT, 
    user VARCHAR(20) NOT NULL, 
    title VARCHAR(128) NOT NULL, 
    date_post DATETIME, 
    date_edit DATETIME, 
    post_content TEXT NOT NULL 
) 

插入新的職位:

$insert = " 
INSERT INTO Posts (
    user, 
    title, 
    date_post, 
    date_edit, 
    post_content 
) VALUES (
    '$username', 
    '$title', 
    NOW(), 
    NOW(), 
    '$post_content' 
) 
"; 

更新很簡單:

$update = " 
UPDATE Posts SET 
    title = '$title', 
    post_content = '$post_content', 
    date_edit = NOW() 
WHERE id = '$postid'; 
"; 

獲取所有帖子用戶:

$posts = " 
SELECT title, date_post, date_edit, post_content 
FROM Posts 
WHERE user = '$username' 
ORDER BY date_post 
";