2013-03-06 260 views
0

我有一个问题,将电子邮件,密码和名称插入到mySQL数据库。 我准备了一个独立的类来连接我的数据库。但是当我把我的名字,电子邮件和密码放在我的表单中(这是在另一个php文件中),那么我的数据库中没有任何东西。 在这里你可以找到我的代码。我已经尝试了我的数据库中的插入语句,并且工作。无法连接到数据库,无法插入数据库

<?php 
include_once("classes/User.class.php"); 
include_once("Tweet.php"); 

class Db 
{ 
    private $m_sHost="localhost"; 
    private $m_sUser="root"; 
    private $m_sPassword=""; 
    private $m_sDatabase="phples"; 
    public $conn; 

    public function __construct() { 
    $this->conn=new mysqli($this->m_sHost,$this->m_sUser,$this->m_sPassword,$this->m_sDatabase); 
    if(isset($m_bVerzend)) { 
     if(!$conn->connect_errno) { 
     $sql = "INSERT INTO 'tbltweet' ('Name', 'Email', 'Password') VALUES ('$m_sName', '$m_sEmail', '$m_sPassword');"; 
     $conn->query($sql); 
     } 
    } 
    } 
} 
?> 
+0

您是否收到任何错误讯息?如果是这样,请编辑您的帖子以包含它们。谢谢。 – bernie 2013-03-06 17:45:39

+1

你必须逃避数据库查询中存在的变量!! 11 – RiaD 2013-03-06 17:52:54

回答

1

在构造函数中,你使用了大量的未在该函数的范围设置变量:

if(isset($m_bVerzend)){ 
    if(!$conn->connect_errno) 
    { 
     $sql = "INSERT INTO 'tbltweet' ('Name', 'Email', 'Password') VALUES ('$m_sName', '$m_sEmail', '$m_sPassword');"; 
     $conn->query($sql);} 
    } 

所有变量,如$m_bVerzend$m_sName等只是不确定。

php manual有关于可变范围的更多信息。

顺便说一句,你还应该使用预处理语句和绑定变量,而不是在你的sql语句中转储你的变量以防止sql注入问题。

0

变量$ m_bVerzend,$ m_sName,$ m_sEmail和$ m_sPassword在函数中不存在。作为标准,PHP的变量被认为是本地范围,除非另有说明。

我会发送值作为构造函数的参数,或者只是使用构造函数实例化连接,然后使用不同的过程来接收参数,准备SQL语句并执行查询。