2012-06-12 41 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()!