无法连接数据库,无法插入数据库

时间:2013-03-06 17:41:33

标签: php mysql

我在向mySQL数据库插入电子邮件,密码和名称时遇到问题。 我准备了一个单独的类来连接我的数据库。但是当我把我的名字,电子邮件和密码放在我的表格中时(这是在另一个php文件中),那么我的数据库中就没有了。 在这里你可以找到我的代码。我已经在我的数据库中尝试过insert语句,但是这样做了。

<?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);
      }
    }
  }
}
?>

2 个答案:

答案 0 :(得分: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注入问题。

答案 1 :(得分:0)

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

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