За последние 24 часа нас посетили 17400 программистов и 1252 робота. Сейчас ищет 1521 программист ...

php 5.4 -> 5.6 не полностью работает код

Тема в разделе "Сделайте за меня", создана пользователем littleclick, 6 май 2019.

  1. littleclick

    littleclick Новичок

    С нами с:
    6 май 2019
    Сообщения:
    3
    Симпатии:
    0
    Помогите пожалуйста. На сервере ранее был php 5.4.45 и всё отлично работало, теперь сервер обновился до 5.6.40 и перестало всё работать как надо. Есть бд mysql в которой две таблицы, keywords и names. В первой таблице содержаться ключи, во второй имена. Смысл был в том, что я открываю страницу mysite.ru/самый-глупый-алексей (скрипт еще убирал всякие "-" для удобства и выводил в title страницы)и если у меня в таблице keywords была запись "самый глупый" и в таблице names была запись "алексей", то открывалась страница page.tpl с html кодом, если таких записей не существовало, то открывалась страница error.tpl с html кодом страница не найдена, а если был запрос mysite.ru/админка то открывалась третья страница с админкой конечно и всё работало отлично, не важно какая было значение keywords на русском или английском. Теперь открывается почему то только на английском, русский вообще не воспринимает и админка не открывается, кодировка в mysql utf-8 впрочем она не менялась. Сменилась только версия php, всё что смог сам разглядеть, это mysql_query сменил на mysqli_query и всё что кончается на i. Собственно сам код:
    PHP:
    1. <?php
    2. ini_set('display_errors', 1);
    3.  
    4. $mysqli = new mysqli("localhost","user","password","db_name");
    5.  
    6. if ($mysqli -> connect_errno)
    7.   {
    8.    printf("Не сработало: %s\n", $mysqli->connect_error);
    9.    exit();
    10.   }
    11. //require_once('mysqli.inc');
    12. $uploaddir = '/var/www/domainname/data/www/mysite.ru/';
    13.  
    14. $module = 'index';
    15. $action = 'index';
    16.  
    17. $params = array();
    18.  
    19. if ($_SERVER['REQUEST_URI'] != '/') {
    20.     try {
    21.  
    22.         $url_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    23.         $url_path = urldecode ($url_path);
    24.  
    25.         $uri_parts = explode('-', trim($url_path, ' -'));
    26.         $znachenie = ''; $search = ''; $title = '';
    27.         foreach ($uri_parts as $search) {
    28.             if ($znachenie != '') {$znachenie .= $search;} else if ($search != 'в') {$title .= $search.' ';}
    29.             if ($search == 'в') {
    30.                 $znachenie .= $search.' ';
    31.             }
    32.         }
    33.        
    34.         $title = str_replace('/', '', $title);
    35.         $search = $uri_parts[count($uri_parts)-1];
    36.         $sql = "SELECT * FROM names where name = '".$search."'";
    37.         $result = mysqli_query($mysqli, $sql);
    38.         $row = mysqli_fetch_assoc($result);
    39.         if ($row['name']) { $title = str_replace($search, '', $title); $znachenie=$search;}
    40.         $sql = "SELECT * FROM keywords where keyword = '".$title."'";
    41.         $result = mysqli_query($mysqli, $sql);
    42.         if (!$result) {
    43.             $message  = 'Неверный запрос: ' . mysql_error() . "\n";
    44.             $message .= 'Запрос целиком: ' . $sql;
    45.             die($message);
    46.         }
    47.         $row = mysqli_fetch_assoc($result);
    48.         if (!$row['keyword']) {
    49.             throw new Exception();
    50.         }
    51.  
    52.         if ($title=='админка') {require_once('adminpage.tpl');}
    53.         else {require_once('page.tpl');}
    54.        
    55.     } catch (Exception $e) {
    56.         require_once('error.tpl');
    57.     }  
    58. }
    59. $mysqli -> close();
    60.  
    61. ?>
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    в фильме пятого элемента спрашивает герой у девушки - "а покороче имя можно ?"
    --- Добавлено ---
    К чему я веду... ты пришел в цех, дают инструменты/место/назначение работникам, что должны выполнять чтобы получить бабло. Ты не работник.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    этого недостаточно - посмотрите как должна правильно вызываться и иcпользоваться библиотека mysqli
     
  4. littleclick

    littleclick Новичок

    С нами с:
    6 май 2019
    Сообщения:
    3
    Симпатии:
    0
    Насколько я вас понял, мне надо вот эти строки
    PHP:
    1. $sql = "SELECT * FROM names where name = '".$search."'";
    2. $result = mysqli_query($mysqli, $sql);
    заменить на эти?
    PHP:
    1. $sql = mysqli_query($mysqli, "SELECT * FROM names where name = '".$search."'")) {
    2. $result = mysqli_query($mysqli, $sql);
    Я извиняюсь, если туплю сильно, но прошу помочь, насколько понял по двум комментариям, то проблема только в mysqli_query или еще что то надо исправлять, кроме рук
    --- Добавлено ---
    И не работник, и не программист, поэтому выбран раздел "Сделайте за меня". По крайней мере с подключением к бд удалось разобраться самостоятельно, пугает всё остальное, что написано, так как не разбираюсь