За последние 24 часа нас посетили 54212 программистов и 1728 роботов. Сейчас ищут 889 программистов ...

хочу понять

Тема в разделе "PHP для новичков", создана пользователем Андрей12, 13 мар 2015.

  1. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    Код (Text):
    1. <?PHP
    2.  
    3. $usid = $_SESSION["id"];
    4. var_dump($usid);
    5. $user = $_SESSION["user"];
    6. var_dump($user);
    7. $password= $_SESSION["password"];
    8. var_dump($password);
    9. $usid = $_SESSION["user_id"];
    10. $db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");
    11. $db->Query("SELECT * FROM db_users_a WHERE user = '$user'");
    12. $db->Query("SELECT * FROM db_users_a WHERE password = '$password'");
    13.  
    14.  
    15.  
    16.  
    17.  
    18.  
    19.  
    20.  
    21.  
    22.  
    23. ?>
    хочу вывести данные которые находятся в базе данных,но вместо их выползает NULL,кроме $user выводит правильное значение которое в базе данных,как сделать чтоб все остальное правильно выводил? каким запросом?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а что это за метод $db->Query ?
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тут подход неверный
     
  4. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    если честно,то я не знаю<что это такое)

    Код (Text):
    1. public function __construct($host, $user, $pass, $base){
    2.         $this->Connect($host, $user, $pass, $base);
    3.         $this->query("SET NAMES 'cp1251'");
    4.         $this->query("SET CHARACTER SET 'cp1251'");
    5.                 $this->db->Query
    6.     }
    7.    
    это вот отсюда пошло)

    я по образцу делал как в другом файле пхп
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Андрей12 ну прочитай книги свежие по PHP, MySQL.

    SELECT * FROM db_users_a WHERE id = '$usid'
    вернёт все столбцы из таблицы db_users_a у столбца id = '$usid'
    по идее запрос уже вернёт user, password если они там есть
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    то есть ты не умеешь отлаживать код и плюс используешь код который не понимаешь... я в восторге.
    "что это такое" это конструктор некоторого класса который очевидно работает с мускулом и скорее всего с устаревшим расширением.
    и я бы дальше продолжил объяснение но конструкция $this->db->Query это просто деление на ноль. потому что после нее нет ; значит это должно вызывать ошибку синтаксиса.
     
  7. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    я с другого файла это выдернул и забыл поставить ; а так там есть) просто показать)
    Код (Text):
    1. /*======================================================================*\
    2.     Function:   __construct
    3.     Descriiption: Выполняется при создании экземпляра класса
    4.     \*======================================================================*/
    5.     public function __construct($host, $user, $pass, $base){
    6.         $this->Connect($host, $user, $pass, $base);
    7.         $this->query("SET NAMES 'cp1251'");
    8.         $this->query("SET CHARACTER SET 'cp1251'");
    9.     }
    10.    
    11.     /*======================================================================*\
    12.     Function:   Stats
    13.     Descriiption: Возвращает статистику по запросам
    14.     \*======================================================================*/
    15.     public function Stats(){
    16.        
    17.         $sD = array();
    18.         $sD["TimeQuery"] = $this->TimeQuery;
    19.         $sD["MaxExTime"] = $this->MaxExTime;
    20.         $sD["ListQueryes"] = $this->ListQueryes;
    21.         $sD["HardQuery"] = $this->HardQuery;
    22.         $sD["Queryes"] = $this->Queryes;
    23.                 $sD["mysql_result"] = $this->mysql_result;
    24.         return $sD;
    25.     }
    26.  
    27.     /*======================================================================*\
    28.     Function:   GetError
    29.     Descriiption: Выводит описание ошибки в поток
    30.     \*======================================================================*/
    31.     private function GetError($TextError){
    32.         $this->MySQLErrors[] = $TextError;
    33.         die($TextError);
    34.     }
    35.    
    36.    
    37.     /*======================================================================*\
    38.     Function:   query
    39.     Descriiption: Запрос
    40.     \*======================================================================*/ 
    41.     public function query($query, $FreeMemory = false, $write_last = true){
    42.        
    43.         $TimeA = $this->get_time();
    44.         $xxt_res = mysqli_query($this->con, $query) or $this->GetError(mysqli_error($this->con));
    45.                
    46.        
    47.         if($write_last) $this->LastQuery = $xxt_res;
    48.        
    49.         $TimeB = $this->get_time() - $TimeA;
    50.         $this->TimeQuery += $TimeB;
    51.        
    52.             if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;}
    53.            
    54.                 if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query;
    55.            
    56.         $this->Queryes++;
    57.        
    58.         if(!$FreeMemory){
    59.             return $this->LastQuery;
    60.         }else return $this->FreeMemory();
    61.        
    62.        
    63.     }
    64.  
    65.     /*======================================================================*\
    66.     Function:   Connect
    67.     Descriiption: Соединяется с ДБ
    68.     \*======================================================================*/ 
    69.     private function Connect($host, $user, $pass, $base){
    70.         $this->con =  @mysqli_connect($host, $user, $pass, $base) or $this->GetError(mysqli_connect_error());
    71.     }
    72.    
    73.    
    74.     /*======================================================================*\
    75.     Function:   MultiQuery
    76.     Descriiption: Множественный запрос
    77.     \*======================================================================*/ 
    78.     function MultiQuery($query){
    79.    
    80.         $TimeA = $this->get_time();
    81.  
    82.         mysqli_multi_query($this->con, $query) or $this->GetError(mysqli_connect_error());
    83.         $TimeB = $this->get_time() - $TimeA;   
    84.         $ret_data = array();
    85.         $counter = 0;
    86.             do{
    87.        
    88.                 if ($result = mysqli_store_result($this->con)) {
    89.                    
    90.                     while ($row = mysqli_fetch_array($result)) {
    91.                     $ret_data[$counter][] = $row;
    92.                     }
    93.                     mysqli_free_result($result);
    94.                     $counter++;
    95.                 }
    96.  
    97.                
    98.             }while(mysqli_next_result($this->con));
    99.  
    100.        
    101.        
    102.         $this->TimeQuery += $TimeB;
    103.            
    104.             if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;}
    105.            
    106.                 if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query;
    107.            
    108.         $this->Queryes++;
    109.        
    110.         return $ret_data;
    111.     }
    112.    
    что можешь сказать по этому куску кода)? устарел? или мало кода)? наверное лучше научиться самому по новому написать и без Query)

    Добавлено спустя 3 минуты 8 секунд:
    я читал и не много понял,но у меня почему то не много по другому чем в книге<если я напишу query_mysqli то он ошибку выведет параметр типо не задан) вот попытался так попробовать. password есть в базе данных,как и user,но password не выдается,а user выдается)
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Андрей12 думаю ты пошёл изучать дальше, прежде чем понял, то что учил до этого.
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну мягко говоря это говнокод. враппер работы с субд пишется для удобства а данный класс практически каждым своим методом докидывает неудобств. красивее оригинальный функциональный апи тогда юзать чем такой враппер.
    впрочем по стилю это попов и для него это наверное шедевр
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    do...while
    однострочные if-ы
    отсутствие автоматизации

    Автор, не равняйся на этот код. Он плохой. Он не добавляет ничего, кроме оверхедов и неинтуитивного ада. Если ты взял встроенную функцию, обернул ее в свою и натыкал таймеров вокруг да около, просто проксируя в нее вызов, это не путь джедая. Путь джедая это когда ты посылаешь запрос одной-единственной командой. А вся остальная магия, типа открытия и обслуживания коннектов, получения ответа, сбор ошибок, разбор мультизапросов, происходит под капотом и тебя, в общем-то уже не интересует. Один раз сделал и готово. В одно действие получил результат.

    А тут руками коннект открой, руками запрос пошли, руками результат вытащи...где-то я это видел. Ах да.
     
  11. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    понял спасибо)