【发布时间】:2012-02-20 15:33:54
【问题描述】:
我正在尝试执行准备好的语句,但由于某种原因我无法创建用户。请注意,我已经能够在旧的传统 fation [mysql_connect 和 ...] 中创建具有相同值的用户可以帮助我确定我在哪里犯了错误吗?
require_once 'config.php';
class AuthDb {
private $db;
function __construct(){
$this->db = mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME)
or die('could not connect');
}
function __destruct(){
$this->db->close();
unset($this->db);
}
public function createUser($name, $email) {
$query = "INSERT INTO myUsers (name, email) VALUES (?, ?)";
$stmt = $this->db->prepare($query);
$stmt->bind_param("ss", $name, $email);
if ($stmt->execute()){
return true;
}
return false;
}
}
$create = new AuthDb();
$name = "bing";
$email = "banbang@yahoo.com";
$test = $create->createUser($name, $email);
【问题讨论】:
-
$this->db = mysqli(DB_SERVER- 你忘了new吗? -
mysqli 是一个函数,为什么要实例化它?
-
我只是好奇,因为有一个名为
mysqli的类和config.php听起来不像它会提供一个名为 mysqli(...) 的函数 ;-) -
你其实是对的,我必须在mysqli(...)之前添加新的。我进行了更改,但仍然无法插入数据库。
-
在这种情况下,
new mysqli... or die(...)将无法按预期工作。即使连接失败,您也会得到一个“有效”的 mysqli 对象。您必须检查$this->db->error和/或$this->db->errno。请参阅 docs.php.net/mysqli.construct(或改用 PDO)。
标签: php oop mysqli prepared-statement