我在向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);
}
}
}
}
?>
答案 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语句并执行查询。