PDO bind_param is undefined method(PDO bind_param 是未定义的方法)
问题描述
我正在远离 mysql 和 mysqli,因为 stackoverflow 上的许多用户一直在说好话.
I'm moving away from mysql and mysqli as many users on stackoverflow are constantly saying good things about it.
我制作了一个数据库类并对此进行了测试,这可以很好地连接到数据库.我试图更新我准备好的语句以匹配但是我在陌生的领域并最终收到以下错误:
I've made a database class and have tested this, this connects fine to the database. I've tried to update my prepared statements to match however I am in unfamiliar territory and have ended up getting the following error:
Fatal error: Call to undefined method PDOStatement::bind_param() in E:xampphtdocsimanageinsert.php on line 50
这反映了这一行:
$stmt->bind_param("s", $_POST['email']);
另外,关于这个,我得到了数据库连接成功和关闭语句返回给我以及致命错误,例如:
Also in regards to this I am getting the database connection success and close statements returned to me as well as the fatal error e.g:
连接数据库成功!连接数据库成功!断开数据库连接成功!
我将解释我想要实现的目标:
I'll explain what I am trying to achieve:
- 在注册用户之前检查数据库中是否存在电子邮件
- 如果是,请告诉用户此电子邮件存在
- 如果不匹配,则将用户插入到用户表中并加密密码
相关代码如下,如果有人能给我一些指导,我将不胜感激.
The relevant code is below and would appreciate if anyone could give me some guidance on this.
index.php
<form id="loginForm" method="POST" action="class.Login.php">
<input type="text" id="email" name="email" placeholder="E-mail">
<input type="password" id="password" name="password" placeholder="Password" class="showpassword">
<input type="submit" name="submit" value="Log in"></form>
插入.php
public function insert() {
$stmt = $this->pdo->prepare("SELECT COUNT(*) FROM users WHERE email=?");
$stmt->bind_param("s", $_POST['email']);
$stmt->execute();
$stmt->bind_result($email_count);
$stmt->fetch();//fecth
$stmt->close();
if ($email_count > 0) {
echo "email exisits! click here to try <a href='register'>again</a>";
} else {
//escape the POST data for added protection
$username = isset($_POST['username']) ? $_POST['username'] : null;
$cryptedPassword = crypt($_POST['password']);
$password = $cryptedPassword;
$name = isset($_POST['name']) ? $_POST['name'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$stmta = $this->pdo->prepare("INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, ?)");
//var_dump($this->pdo->error);
$stmta->bind_param('ssss', $username, $password, $name, $email); // bind strings to the paramater
/* execute prepared statement */
$stmta->execute();
printf("%d Row inserted.
", $stmta->affected_rows);
/* close statement and connection */
$stmta->close();
} // end email_count and insert to table
} // end function
connect/class.Database.php
connect/class.Database.php
<?php
// Database connection PDO
class Database {
public function __construct() {
// Connection information
$host = 'localhost';
$dbname = 'imanage';
$user = 'root';
$pass = '';
// Attempt DB connection
try
{
$this->pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Successfully connected to the database!';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function __destruct()
{
// Disconnect from DB
$this->pdo = null;
echo 'Successfully disconnected from the database!';
}
}
$run = new Database();
?>
推荐答案
一些 PDO 示例
绑定参数示例
$stmt = $this->pdo->prepare("SELECT COUNT(*) FROM users WHERE email=:email");
$stmt->bindParam(":email", $_POST['email']);
$stmt->execute();
$stmt->fetch(PDO::FETCH_ASSOC);
数组示例
$data = array($username, $password, $name, $email);
$stmta = $this->pdo->prepare("INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, ?)");
$stmta->execute($data);
PDO教程
这篇关于PDO bind_param 是未定义的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PDO bind_param 是未定义的方法
基础教程推荐
- 使用 PDO 转义列名 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01