Member 13962198 Ответов: 2

Получение предупреждения об ошибке: mysqli_query() ожидает, что параметр 1 будет mysqli, объект, заданный в C:\xampp\htdocs\nn\views\register.php на линии 10


register.php
<?php
if(isset($_POST["register"])){
    $firstname=$_POST["first_name"];
    $middlename=$_POST["middle_name"];
    $surname=$_POST["surname"];
    $username=$_POST["username"];
    $email=$_POST["email"];
    $password=md5($_POST["password_1"]);
    $query_reg="INSERT INTO tbl_users VALUES('','$firstname','$middlename','$surname','$username','$email','$password','')";
    $result_obj=mysqli_query($conn,$query_reg);
    if($result_obj){
?>  
<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_name = "cive_orsp";
try{
    $conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_username,$db_password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Succefully Connected";
}catch(PDOException $e){
    die("Database Exception ".$e->getMessage());
}

?>


Что я уже пробовал:

я пытался подключить свою регистрационную страницу к базе данных

2 Ответов

Рейтинг:
2

Patrice T

$query_reg="INSERT INTO tbl_users VALUES('','$firstname','$middlename','$surname','$username','$email','$password','')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
1

Jochen Arndt

Вы смешиваете два метода доступа к базе данных PHP: PHP: PDO - руководство пользователя[^] и PHP: MySQLi - руководство пользователя[^].

Ваш $conn переменная-это объект PDO, но РНР: в mysqli::запрос - руководство по эксплуатации[^] требует, чтобы первый параметр был объектом соединения mysqli.

Так что либо подключайтесь с помощью mysqli_connect() или выполнить с помощью PDO::prepare() и PDO::query().