Предупреждение: mysqli_escape_string() ожидает, что параметр 1 будет mysqli, null задан в C:\wamp64\www\form.php на линии 16
Всем доброго дня. Я пытался отправить форму в базу данных, и при отправке формы вышеприведенное предупреждение появилось. Хотя форма была успешно отправлена. Как удалить предупреждение:
Warning: mysqli_escape_string() expects parameter 1 to be mysqli, null given in C:\wamp64\www\form.php on line 16
Что я уже пробовал:
Here is what i have tried. <pre><?php // the next line check for the variable POST. if(array_key_exists('First_Name', $_POST) OR array_key_exists('Surname', $_POST) OR array_key_exists('Address', $_POST) OR array_key_exists('Email', $_POST) OR array_key_exists('password', $_POST)){ if($_POST['Email'] == ''){ echo "<p> Email Address is required </p>"; } else if($_POST['password'] == ''){ echo "<p> Password is required </p>"; } // to check if the user exist else{ $query = "Select 'id' from 'tbl_address_book' where Email = '".mysqli_real_escape_string($link, $_POST['Email'])."'"; $result = mysqli_query($link, $query); if(mysqli_num_rows($result) > 0){ echo "<p> That Email has already been taken </p>"; } else { $query = "INSERT INTO 'tbl_address_book' ('First_Name', 'Surname', 'Address', 'Email', 'password') Values ('".mysqli_real_escape_string($link, $_POST['First_Name'])."', '".mysqli_real_escape_string($link, $_POST['Surname'])."', '".mysqli_real_escape_string($link, $_POST['address'])."', '".mysqli_real_escape_string($link, $_POST['Email'])."', '".mysqli_real_escape_string($link, $_POST['Password'])."')"; if(mysqli_query($link, $query)); { echo "<p> You have been successfully added to our Address Book! </p>"; } } } } $link = mysqli_connect("localhost", "root", "", "addressbook"); if(mysqli_connect_error()){ die ("There was error connecting to the database"); } ?>
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
Richard Deeming
Вы храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]
Olumideoluwatosin
- Спасибо, сэр. Но будет ли это по-прежнему решать сообщение об ошибке?
Richard Deeming
Если вы используете параметризованный запрос, вам не нужно будет вызывать mysqli_real_escape_string
вообще, так что он должен устранить эту ошибку.
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
PHP: mysqli::подготовка[^]
РНР: mysqli_stmt::bind_param[^]
Olumideoluwatosin
Ладно, я перезвоню тебе как можно скорее. Спасибо.
Olumideoluwatosin
Пожалуйста, найдите решение, которое я получил без какого-либо сообщения об ошибке. Спасибо.