-2

我正在尝试以面向对象的方式将表单中的数据插入到我的数据库中,但只是没有插入数据。为什么不?

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

4 回答 4

1

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

现在,你需要转义你的数据,否则你会遇到麻烦!我建议完全抛弃你在mysql_功能方面的东西,并学习使用 PDO 进行准备好的查询

于 2012-06-12T23:19:04.710 回答
1

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

于 2012-06-12T23:23:09.557 回答
0

你有mysql_select_db("this->tablename")

你需要mysql_select_db($this->tablename)

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

于 2012-06-12T23:20:05.313 回答
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 应用程序,请开始对您的密码进行加盐和散列处理。


mysql_select_db("this->tablename");

"this->tablename"应该$this->tablename是。


您也从不mysqldb()首先打电话;您需要在尝试插入数据库之前执行此操作。

$user1->mysqldb();
于 2012-06-12T23:22:55.117 回答