0

我在将电子邮件、密码和名称插入 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);
      }
    }
  }
}
?>
4

2 回答 2

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 手册中提供了有关变量范围的更多信息。

顺便说一句,您还应该使用带有绑定变量的准备好的语句,而不是在 sql 语句中转储变量,以防止 sql 注入问题。

于 2013-03-06T17:48:58.043 回答
0

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

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

于 2013-03-06T18:09:11.883 回答