PDO bind_param - неопределенный метод [дубликат]
На этот вопрос уже есть ответ здесь:
Могу ли я смешивать MySQL API в PHP? 4 ответаЯ ухожу от mysql и mysqli, так как многие пользователи на stackoverflow постоянно говорят хорошие вещи об этом.
Я сделал класс базы данных и проверил это, это прекрасно соединяется с базой данных. Я попытался обновить свои подготовленные заявления, чтобы они соответствовали, однако я нахожусь на незнакомой территории и в результате получил следующую ошибку:
Fatal error: Call to undefined method PDOStatement::bind_param() in E:\xampp\htdocs\imanage\insert.php on line 50
который отражает эту строку:
$stmt->bind_param("s", $_POST['email']);
Также в связи с этим я получаю успешное соединение с базой данных и возвращаемые мне операторы close, а также фатальную ошибку, например:
Successfully connected to the database!Successfully connected to the database!Successfully disconnected from the database!
Я объясню, чего я пытаюсь достичь:
Перед регистрацией пользователя проверьте, есть ли в базе данных электронная почтаесли это так, сообщите пользователю, что эта электронная почта существуетесли нет совпадения, вставьте пользователя в таблицу пользователей и зашифруйте парольСоответствующий код приведен ниже, и я был бы признателен, если бы кто-нибудь мог дать мне некоторые рекомендации по этому вопросу
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>
insert.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
подключить / 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();
?>