2012-02-04 44 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 
";