我正在远离mysql和mysqli,因为stackoverflow上的许多用户都在不断地谈论它的优点。
我做了一个数据库类,并测试了这个,这与数据库连接良好。我试图更新我准备好的语句,以匹配我在不熟悉的领域,但最终得到以下错误:
致命错误:调用E:\xampp\htdocs\imanage\insert中未定义的方法PDOStatement::bind_param()。php第50行
它反映了这一行:
$stmt-
此外,关于这一点,我得到了返回给我的数据库连接成功和关闭语句以及致命错误,例如:
已成功连接到数据库!已成功连接到数据库!已成功断开与数据库的连接
我将解释我试图实现的目标:
在注册用户之前检查数据库中是否存在电子邮件
- 如果是,告诉用户该电子邮件存在
- 如果不匹配,将用户插入用户表并加密密码
相关代码如下,如果有人能给我一些指导,我们将不胜感激。
指数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.\n", $stmta->affected_rows);
/* close statement and connection */
$stmta->close();
} // end email_count and insert to table
} // end function
连接/分类。数据库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示例
带有Bind参数的示例
$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教程
将bind_param()
设置为bindParam()
。
错误在最后一行,我想知道到底出了什么问题,以及如何修复它,谢谢!
获取类型错误,但使用onClick={()=
我已运行此以显示表中的所有。 但它给了我那个错误。 调用未定义的方法mysqli_result::result()
Good day我不确定发生了什么我怀疑eclipse,但在UserDetailsServiceImpl中它是定义的,因为我实现了spring的UserDetails服务,下面是我的代码 这是让人头痛的一行“UserDetails UserDetails=userDetailsService.loadUserByUsername(username)”提前感谢您
为什么会这样?名称不应该是未定义的,因为没有给它赋值吗? 如果我尝试相同的,让我们说,它将分配它是未定义的。是一个特殊的关键字还是什么? 谢谢你。
我正在使用库Lodash,我需要从我的javascript对象中删除可能的未定义属性,但我希望保留null属性。 例如,如果我有这样的对象: 我希望输出如下: 我试过这个: 但它也会删除空值。Lodash是否包含一些功能?谢谢