Я работаю в MAMP, пытаясь сделать функцию входа в систему.
Мой код подключения:
$servername = "localhost"; $username = "root"; $password = "root"; $db = "world"; $mysqli = new mysqli($servername, $username, $password, $db); if($mysqli->connect_error){ die("Connection failed: " . $conn->connect_error); }
Моя функция входа:
if (isset($_POST['email'], $_POST['p'])){ $email = $_POST['email']; $password = $_POST['p']; //hashed password if(login($email, $password, $mysqli) == true){ header('Location: ../protected_page.php'); }else{ echo 'failed login'; } } function login($email, $password, $mysqli){ if($stmt = $mysqli->prepare("SELECT USERID, USERNAME, PASSWORD, SALT FROM USERS WHERE EMAIL = ? LIMIT 1")){ $stmt = $mysqli->bind_param('s', $email); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($user_id, $username, $db_password, $salt); $stmt->fetch(); }
Ошибка:
[17-Oct-2015 08:46:06 Европа / Берлин] PHP Неустранимая ошибка: вызов неопределенного метода mysqli :: bind_param () в /Users…/Site/include/functions.php в строке 24
Вам нужно вызвать bind_param
для вашего утверждения, например:
$stmt->bind_param('s', $email);
Вы уже определили $stmt
одну строку до этого. $mysqli
не имеет функции bind_param
.
http://php.net/manual/en/mysqli-stmt.bind-param.php
Из руководства вы можете видеть, что это не метод объекта mysqli, а объект mysqli_stmt.
Вы также уничтожаете объект mysqli_stmt при запуске $stmt = $mysqli->bind_param('s', $email);