使用OOP将表单中的数据插入数据库

时间:2012-06-12 23:15:56

标签: php 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();

4 个答案:

答案 0 :(得分:1)

第一个问题是您的主机名错误。使用localhost,而不是local host

现在,你需要逃避你的数据,否则你会遇到麻烦!我建议完全抛弃你在mysql_函数和learn to do prepared queries with PDO方面所拥有的内容。

答案 1 :(得分:1)

在实例化类之后,调用insertdb()方法,但无法连接到数据库。你必须先调用mysqldb()!

答案 2 :(得分:0)

您有mysql_select_db("this->tablename")

您需要mysql_select_db($this->tablename)

这至少是我看到的直接问题。您应该检查PDO,它能够将数据提取到类和对象中。这是更好的练习。

答案 3 :(得分:0)

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

local host应为localhost


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

最后两个变量都没有定义 - 你可能意味着$this->username$this->password。你也可能正好打开一些SQL注入漏洞 - 查看PDO和准备好的语句。如果这是针对实际的Web应用程序,请开始对您的密码进行salting和哈希处理。


mysql_select_db("this->tablename");

"this->tablename"应为$this->tablename


你也从不打电话给mysqldb();在尝试插入数据库之前,您需要这样做。

$user1->mysqldb();