За последние 24 часа нас посетили 16070 программистов и 1542 робота. Сейчас ищут 878 программистов ...

хочу знать

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

  1. Андрей12

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

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    у меня сейчас стоит mysqli_query если я поставлю mysql_query то будет ошибка что не подключен к базе данных,а как сделать,чтоб они оба работали одинакова ? и есть ли различие между ними? что лучше?
    Код (Text):
    1. <?PHP
    2.  
    3. class db{
    4.  
    5.  
    6.     private $con = false; // Идентификатор
    7.     private $Queryes = 0; // Число запросов
    8.     private $MySQLErrors = array(); // Массив с ошибками
    9.     private $TimeQuery = 0; // Всемя запросов
    10.     private $MaxExTime = 0; // Максимальное время за 1 запрос
    11.     private $ListQueryes = ""; // Список запросов
    12.     private $HardQuery = ""; // Самый тяжелый запрос
    13.     private $LastQuery = false; // Ресурс запрос
    14.     private $ConnectData = array(); // Данные соединения
    15.    
    16.     /*======================================================================*\
    17.     Function:   __construct
    18.     Descriiption: Выполняется при создании экземпляра класса
    19.     \*======================================================================*/
    20.     public function __construct($host, $user, $pass, $base){
    21.         $this->Connect($host, $user, $pass, $base);
    22.         $this->query("SET NAMES 'cp1251'");
    23.         $this->query("SET CHARACTER SET 'cp1251'");
    24.     }
    25.    
    26.     /*======================================================================*\
    27.     Function:   Stats
    28.     Descriiption: Возвращает статистику по запросам
    29.     \*======================================================================*/
    30.     public function Stats(){
    31.        
    32.         $sD = array();
    33.         $sD["TimeQuery"] = $this->TimeQuery;
    34.         $sD["MaxExTime"] = $this->MaxExTime;
    35.         $sD["ListQueryes"] = $this->ListQueryes;
    36.         $sD["HardQuery"] = $this->HardQuery;
    37.         $sD["Queryes"] = $this->Queryes;
    38.                 $sD["mysql_result"] = $this->mysql_result;
    39.         return $sD;
    40.     }
    41.  
    42.     /*======================================================================*\
    43.     Function:   GetError
    44.     Descriiption: Выводит описание ошибки в поток
    45.     \*======================================================================*/
    46.     private function GetError($TextError){
    47.         $this->MySQLErrors[] = $TextError;
    48.         die($TextError);
    49.     }
    50.    
    51.    
    52.     /*======================================================================*\
    53.     Function:   query
    54.     Descriiption: Запрос
    55.     \*======================================================================*/ 
    56.     public function query($query, $FreeMemory = false, $write_last = true){
    57.        
    58.         $TimeA = $this->get_time();
    59.         $xxt_res = mysqli_query($this->con, $query) or $this->GetError(mysqli_error($this->con));
    60.        
    61.          
    62.        
    63.         if($write_last) $this->LastQuery = $xxt_res;
    64.        
    65.         $TimeB = $this->get_time() - $TimeA;
    66.         $this->TimeQuery += $TimeB;
    67.        
    68.             if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;}
    69.            
    70.                 if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query;
    71.            
    72.         $this->Queryes++;
    73.        
    74.         if(!$FreeMemory){
    75.             return $this->LastQuery;
    76.         }else return $this->FreeMemory();
    77.        
    78.        
    79.     }
    80.  
    81.     /*======================================================================*\
    82.     Function:   Connect
    83.     Descriiption: Соединяется с ДБ
    84.     \*======================================================================*/ 
    85.     private function Connect($host, $user, $pass, $base){
    86.         $this->con =  @mysqli_connect($host, $user, $pass, $base) or $this->GetError(mysqli_connect_error());
    87.        
    88.     }
    89.    
    90.    
    91.     /*======================================================================*\
    92.     Function:   MultiQuery
    93.     Descriiption: Множественный запрос
    94.     \*======================================================================*/ 
    95.     function MultiQuery($query){
    96.    
    97.         $TimeA = $this->get_time();
    98.  
    99.         mysqli_multi_query($this->con, $query) or $this->GetError(mysqli_connect_error());
    100.         $TimeB = $this->get_time() - $TimeA;   
    101.         $ret_data = array();
    102.         $counter = 0;
    103.             do{
    104.        
    105.                 if ($result = mysqli_store_result($this->con)) {
    106.                    
    107.                     while ($row = mysqli_fetch_array($result)) {
    108.                     $ret_data[$counter][] = $row;
    109.                     }
    110.                     mysqli_free_result($result);
    111.                     $counter++;
    112.                 }
    113.  
    114.                
    115.             }while(mysqli_next_result($this->con));
    116.  
    117.        
    118.        
    119.         $this->TimeQuery += $TimeB;
    120.            
    121.             if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;}
    122.            
    123.                 if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query;
    124.            
    125.         $this->Queryes++;
    126.        
    127.         return $ret_data;
    128.     }
    129.    
    130.     /*======================================================================*\
    131.     Function:   get_time
    132.     Descriiption: Возвращает строку времени
    133.     \*======================================================================*/ 
    134.     private function get_time()
    135.     {
    136.         list($seconds, $microSeconds) = explode(' ', microtime());
    137.         return ((float) $seconds + (float) $microSeconds);
    138.     }
    139.    
    140.     /*======================================================================*\
    141.     Function:   __destruct
    142.     Descriiption: Выполняется при уничтожении экземпляра класса
    143.     \*======================================================================*/
    144.     function __destruct(){
    145.        
    146.         if( !count($this->MySQLErrors) ) mysqli_close($this->con);
    147.    
    148.     }
    149.    
    150.     /*======================================================================*\
    151.     Function:   FreeMemory
    152.     Descriiption: Освобождает память
    153.     \*======================================================================*/
    154.     function FreeMemory()
    155.     {
    156.         $tr = ($this->LastQuery) ? true : false;
    157.         @mysqli_free_result($this->LastQuery);
    158.         return $tr;
    159.     }
    160.    
    161.     /*======================================================================*\
    162.     Function:   RealEscape
    163.     Descriiption: Фильтрация )
    164.     \*======================================================================*/
    165.     function RealEscape($string)
    166.     {
    167.         if ($this->con) return mysqli_real_escape_string ($this->con, $string);
    168.         else return mysql_escape_string($string);
    169.     }
    170.    
    171.     /*======================================================================*\
    172.     Function:   NumRows
    173.     Descriiption: Подсчет числа строк
    174.     \*======================================================================*/
    175.     function NumRows()
    176.     {
    177.         return mysqli_num_rows($this->LastQuery);
    178.     }
    179.    
    180.     /*======================================================================*\
    181.     Function:   fetch_array
    182.     Descriiption: Возвращ массив, создает циферные ключи...
    183.     \*======================================================================*/
    184.     function FetchArray(){
    185.         //if($this->LastQuery)
    186.         return mysqli_fetch_array($this->LastQuery);
    187.     }
    188.    
    189.     /*======================================================================*\
    190.     Function:   NumRows
    191.     Descriiption: Возвращает результат
    192.     \*======================================================================*/
    193.     function FetchRow(){
    194.         $xres = mysqli_fetch_row($this->LastQuery);
    195.        
    196.         return (count($xres) > 1) ? $xres :  $xres[0];
    197.     }
    198.    
    199.     /*======================================================================*\
    200.     Function:   LastInsert()
    201.     Descriiption: Возвращает последний ID вставки
    202.     \*======================================================================*/
    203.     function LastInsert(){
    204.        
    205.         return @mysqli_insert_id($this->con);
    206.        
    207.     }
    208.    
    209. }
    210. ?>
     
  2. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    порядок вопросов не верен. вы бы должны были сначала проштудировать информацию о mysqli и mysql, выбрали что вам нужно, а уже потом, возможно, задали бы вопрос, а как сделать чтобы.
     
  3. Андрей12

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

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    я уже как 3 дня выбрал что мне надо,но нашел скрипт и там везде mysql_query написано,а у меня стоит mysqli_qury , и пишет мол не подключен к базе данных,может подскажешь как сделать? я попробовал так
    Код (Text):
    1.  $this->con =  @mysql_connect($host, $user, $pass, $base) or $this->GetError(mysql_connect_error());
    2. mysql_query($this->con, $query) or $this->GetError(mysql_connect_error());  но у меня не получилось,вот думаю что не так)?  
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а в чем глубокий смысл попытки использования расширения которое будет выпилено в ближайших релизах? заранее готовишься ныть на форумах что вдруг перестало работать?
     
  5. Андрей12

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

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    да причем тут плакать? я просто интересуюсь,а потом уже можно будет что нибудь свое сделать,если пойму всю схему)
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты вопроса не понял. я понимаю жопу рвать и делать "мультиэкстеншн" под pdo и mysqli но чтоб жопу рвать и делать под mysql и mysqli это ты не туда разбрасываешь своё время :D
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Во-первых, Ganzal конечно прав - надо использовать mysqli. А во-вторых - ну почему никто не заглядывает в мануалы по функциям на https://php.net? Там же ясно написано, что функции расширения mysql принимают идентификатор соединения вторым, а не первым параметром.
     
  8. denis01

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

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