[英]php/mysql oop using prepared statement review
I am trying to implement prepared statement but for some reason I am not able to create user. 我正在尝试执行准备好的语句,但是由于某种原因,我无法创建用户。 Note, I have already been able to create user with same values in the old tradition fation [mysql_connect and ...] Could some body help me identify where I am making my mistake? 注意,在旧的传统格式[mysql_connect and ...]中,我已经能够创建具有相同值的用户了。某些机构可以帮助我确定我在哪里犯错了吗?
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);
Try it with more error handling/logging. 尝试使用更多错误处理/日志记录。
define('DEBUG_LOG', true);
function onError($general, $details) {
echo '<pre>', htmlentities($general), "</pre>\n";
if ( defined('DEBUG_LOG') && DEBUG_LOG ) {
echo '<pre>', htmlentities($details), "</pre>\n";
echo '<pre>'; debug_print_backtrace(); echo "</pre>\n";
}
die;
}
class AuthDb {
[...]
public function createUser($name, $email) {
$query = "INSERT INTO myUsers (name, email) VALUES (?, ?)";
$stmt = $this->db->prepare($query);
if ( !$stmt ) {
onError('database error', $this->db->errno .': '.$this->db->error);
return false;
}
$rc = $stmt->bind_param("ss", $name, $email);
if ( !$rc ) {
onError('database error', 'bind failed');
return false;
}
if ( !$stmt->execute() ) {
onError('database error', $stmt->errno.': '.$stmt->error );
return false;
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.