За последние 24 часа нас посетили 20855 программистов и 1136 роботов. Сейчас ищут 325 программистов ...

Ошибка: mysqli_query () ожидает, что параметр 1 будет mysqli, null

Тема в разделе "PHP для новичков", создана пользователем Suyunoff, 6 авг 2019.

Метки:
  1. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    Это запрос на добавление реферальной ссылки,после регистрации пользователь должен получить реферальную ссылку, но почему то пишет ошибку:
    Код (Text):
    1. if(!empty($current_id)) {
    2.  
    3.                  $email    = $_POST['email'];
    4.                  $ref = $_SESSION['ref_id'];
    5.    
    6.         $as = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    7.         $a = mysqli_fetch_assoc($as);
    8.         $i = $a['id'];
    9.         $_SESSION['logged_user']->id = $i;
    10.         $user = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    11.         $a = mysqli_fetch_assoc($user);
    12.         $us=$a['id'];
    13.         $query = mysqli_query($conn, "INSERT INTO `referals` (id, id_user, id_usser)
    14.         VALUES('','$us', '$ref')");
    15.         $info_reg = 'Ваша реферальная ссылка: <a href= "//help.com/referal.php?id='.$_SESSION['logged_user']->id.'">//help.com/referal.php?id='.$_SESSION['logged_user']->id.'</a><br>Это ваша индивидуальная реферальная ссылка, по этой ссылки вы можете звать друзей и получать бонусы </br></br>';
    16.  
    17.         if (!empty($_SESSION['logged_user']->id));
    upload_2019-8-6_22-34-14.png
    upload_2019-8-6_22-35-40.png
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  3. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    Код (Text):
    1. <?php
    2. class DBController {
    3.     private $host = "localhost";
    4.     private $user = "root";
    5.     private $password = "";
    6.     private $database = "phppot_examples";
    7.     private $conn;
    8.    
    9.     function __construct() {
    10.         $this->conn = $this->connectDB();
    11.     }
    12.    
    13.     function connectDB() {
    14.         $conn = mysqli_connect($this->host,$this->user,$this->password, $this->database);
    15.         return $conn;
    16.     }
    17.    
    18.     function runQuery($query) {
    19.         $result = mysqli_query($this->conn, $query);
    20.         while($row=mysqli_fetch_assoc($result)) {
    21.             $resultset[] = $row;
    22.         }      
    23.         if(!empty($resultset))
    24.             return $resultset;
    25.     }
    26.    
    27.     function numRows($query) {
    28.         $result  = mysqli_query($this->conn, $query);
    29.         $rowcount = mysqli_num_rows($result);
    30.         return $rowcount;  
    31.     }
    32.    
    33.     function updateQuery($query) {
    34.         $result = mysqli_query($this->conn, $query);
    35.         if (!$result) {
    36.             die('Invalid query: ' . mysqli_error($this->conn));
    37.         } else {
    38.             return $result;
    39.         }
    40.     }
    41.    
    42.     function insertQuery($query) {
    43.         $result = mysqli_query($this->conn, $query);
    44.         if (!$result) {
    45.             die('Invalid query: ' . mysqli_error($this->conn));
    46.         } else {
    47.             return mysqli_insert_id($this->conn);
    48.         }
    49.     }
    50.    
    51.     function deleteQuery($query) {
    52.         $result = mysqli_query($this->conn, $query);
    53.         if (!$result) {
    54.             die('Invalid query: ' . mysqli_error($this->conn));
    55.         } else {
    56.             return $result;
    57.         }
    58.     }
    59. }
    60. ?>
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Покажи в примере который выше откуда ты берешь $conn
    --- Добавлено ---
    вот до этой строки где ты присваиваешь переменной $conn что то?
    PHP:
    1. $as = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
     
  5. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    вот весь код register.php
    Код (Text):
    1. <?php
    2.  
    3.  
    4. if(count($_POST)>0) {
    5.     /* Form Required Field Validation */
    6.     foreach($_POST as $key=>$value) {
    7.     if(empty($_POST[$key])) {
    8.     $message = ucwords($key) . " field is required";
    9.     $type = "error";
    10.     break;
    11.     }
    12.     }
    13.     /* Password Matching Validation */
    14.     if($_POST['password'] != $_POST['confirm_password']){
    15.     $message = 'Passwords should be same<br>';
    16.     $type = "error";
    17.     }
    18.  
    19.     /* Email Validation */
    20.     if(!isset($message)) {
    21.     if (!filter_var($_POST["userEmail"], FILTER_VALIDATE_EMAIL)) {
    22.     $message = "Invalid UserEmail";
    23.     $type = "error";
    24.     }
    25.     }
    26.  
    27.     /* Validation to check if gender is selected */
    28.     if(!isset($message)) {
    29.     if(!isset($_POST["gender"])) {
    30.     $message = " Gender field is required";
    31.     $type = "error";
    32.     }
    33.     }
    34.  
    35.     /* Validation to check if Terms and Conditions are accepted */
    36.     if(!isset($message)) {
    37.     if(!isset($_POST["terms"])) {
    38.     $message = "Accept Terms and conditions before submit";
    39.     $type = "error";
    40.     }
    41.     }
    42.    
    43.     if(!isset($message)) {
    44.         require_once("dbcontroller.php");
    45.         $db_handle = new DBController();
    46.         $query = "SELECT * FROM registered_users where email = '" . $_POST["userEmail"] . "'";
    47.         $count = $db_handle->numRows($query);
    48.        
    49.         if($count==0) {
    50.             $query = "INSERT INTO registered_users (user_name, first_name, last_name, password, email, gender) VALUES
    51.             ('" . $_POST["userName"] . "', '" . $_POST["firstName"] . "', '" . $_POST["lastName"] . "', '" . ($_POST["password"]) . "', '" . $_POST["userEmail"] . "', '" . $_POST["gender"] . "')";
    52.             $current_id = $db_handle->insertQuery($query);
    53.            
    54.             if(!empty($current_id)) {
    55.  
    56.                  $email    = $_POST['email'];
    57.                  $ref = $_SESSION['ref_id'];
    58.        
    59.         $as = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    60.         $a = mysqli_fetch_assoc($as);
    61.         $i = $a['id'];
    62.         $_SESSION['logged_user']->id = $i;
    63.         $user = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    64.         $a = mysqli_fetch_assoc($user);
    65.         $us=$a['id'];
    66.         $query = mysqli_query($conn, "INSERT INTO `referals` (id, id_user, id_usser)
    67.         VALUES('','$us', '$ref')");
    68.         $info_reg = 'Ваша реферальная ссылка: <a href= "//help.com/referal.php?id='.$_SESSION['logged_user']->id.'">//help.com/referal.php?id='.$_SESSION['logged_user']->id.'</a><br>Это ваша индивидуальная реферальная ссылка, по этой ссылки вы можете звать друзей и получать бонусы </br></br>';
    69.  
    70.         if (!empty($_SESSION['logged_user']->id));
    71.        
    72.  
    73.                 $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"."activate.php?id=" . $current_id;
    74.                 $toEmail = $_POST["userEmail"];
    75.                 $subject = "User Registration Activation Email";
    76.                 $content = "Click this link to activate your account. <a href='" . $actual_link . "'>" . $actual_link . "</a>";
    77.                 $mailHeaders = "From: Admin\r\n";
    78.                 if(mail($toEmail, $subject, $content, $mailHeaders)) {
    79.                     $message = "You have registered and the activation mail is sent to your email. Click the activation link to activate you account.";  
    80.                     $type = "success";
    81.  
    82.                 }
    83.                 unset($_POST);
    84.                
    85.             }
    86.  
    87.             else {
    88.                 $message = "Problem in registration. Try Again!";  
    89.             }
    90.         } else {
    91.             $message = "User Email is already in use.";  
    92.             $type = "error";
    93.  
    94.  
    95.         }
    96.     }
    97. }
    98.  
    99. echo $info_reg;
    100.  
    101. ?>
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    Найми спеца, не мучай форум(чан).
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    нет там у тебя $conn
    добавь выше
    PHP:
    1. $conn = mysqli_connect("localhost", "my_user", "my_password", "world");
    2.  
    3. /* проверка соединения */
    4.     printf("Не удалось подключиться: %s\n", mysqli_connect_error());
    5.     exit();
    6. }
     
  8. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Suyunoff, ты даже не рядом с программированием. Советую отложить код на полгодика, почитать книг хороших, а потом вернуться на форум с вопросами. К тому моменту ты хотя бы научишься их задавать.
    Нет смысла тратить свое время на того, кто не может понять ответ.
     
  9. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    или вытяни из своего класса эту функцию
    PHP:
    1. function connectDB() {
    2.         $conn = mysqli_connect($this->host,$this->user,$this->password, $this->database);
    3.         return $conn;
    4.     }
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Вот обязательно надо класс куда-нибудь написать.... А прочитать как работают классы - нееее....
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @Suyunoff, вам самому свой код нравится ? удобно читаемо ? а если поставить в начале:
    PHP:
    1. <?php
    2.  
    3. declare ( strict_types = 1 );
    и не говнокодить
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    @MouseZver, не издевайся над человеком :))) Ему только strict types не хватает, ага... :)
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Это не издевательство, а направление на исправление. Не многие юзают фичу, думая что error_reporting E_ALL достаточно :)
     
  14. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    Код (Text):
    1. if($count==0) {
    2.             $query = "INSERT INTO registered_users (user_name, first_name, last_name, password, email, gender) VALUES
    3.             ('" . $_POST["userName"] . "', '" . $_POST["firstName"] . "', '" . $_POST["lastName"] . "', '" . ($_POST["password"]) . "', '" . $_POST["userEmail"] . "', '" . $_POST["gender"] . "')";
    4.             $current_id = $db_handle->insertQuery($query);
    5.            
    6. if(!empty($current_id)) {
    7.  
    8.  
    9.                  $email    = $_POST['email'];
    10.                  $ref = $_SESSION['ref_id'];
    11.        
    12.         $as = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    13.         $a = mysqli_fetch_assoc($as);
    14.         $i = $a['id'];
    15.         $_SESSION['logged_user']->id = $i;
    16.         $user = mysqli_query($conn, "SELECT `id` FROM `registered_users` WHERE `email` = '$email'");
    17.         $a = mysqli_fetch_assoc($user);
    18.         $us=$a['id'];
    19.         $query = mysqli_query($conn, "INSERT INTO `referals` (id, id_user, id_usser)
    20.         VALUES('','$us', '$ref')");
    21.         $info_reg = 'Ваша реферальная ссылка: <a href= "//help.com/referal.php?id='.$_SESSION['logged_user']->id.'">//help.com/referal.php?id='.$_SESSION['logged_user']->id.'</a><br>Это ваша индивидуальная реферальная ссылка, по этой ссылки вы можете звать друзей и получать бонусы </br></br>';
    22.  
    23. if (!empty($_SESSION['logged_user']->id));
    24.        
    Привет, я добавил то то что ты написал, в другой файл и соединил через инклуд. ошибки не выдает, но
    не показывает id
    upload_2019-8-7_19-7-48.png
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Почему не показывает ид ?
     
  16. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    не знаю, все перепроверил,строго не судите, просто я никогда не делал реф.ссылку. мне дали задание сделать и я делаю)
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Notice: Trying to get property 'id' of non-object in
    --- Добавлено ---
    Противоречишь себе.

    В начале скрипта при кодинге ВСЕГДА пиши:
    PHP:
    1. <?php
    2.  
    3. declare ( strict_types = 1 );
    4.  
    5. error_reporting ( E_ALL );
    Узнаешь в чем причина.
     
  18. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    upload_2019-8-7_19-51-39.png
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    поэтапно спрошу.

    Версия пхп какая ? создай тест файл и там впиши:

    PHP:
    1. <?php
    2.  
    3. echo phpversion();
     
  20. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    5.3.13
     
  21. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
  22. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    до этого я делал регистрацию через реф ссылкой по этому коду, но там не было подтерждение эмайл, поэтому я через интернет писал регистрацию с подтверждением через эмайл и добавить туда реферальную ссылку, думал так будет легче, но там реферальная ссылка работала нормально)
     
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Не нормально, а как попало (рандомно). Работает значит ура ( зная что ошибки есть в синтаксисе )
     
  24. Suyunoff

    Suyunoff Новичок

    С нами с:
    16 июл 2019
    Сообщения:
    38
    Симпатии:
    1
    я вот долго думал,и попробовал сделать так "а что если самому написать id человека, добавятся ли в базу данных" и сделал и она работает, в бд показывает кто кого пригласил но просто не показывает id после регистрации
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    На чем мы остановились ?