Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переход на mysqli помощь в запросах

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Lolya
Отправлено: 24 Мая, 2018 - 11:04:20
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




Помогите пожалуйста перевести два запроса на новый вид mysqli, так как все в старом скрипте до сих пор сидит на sql_query. В новых видах запросах толком не понимаю, в старом еле разобрался, а тут вообще темный лес. Заранее спасибо. Ниже два запроса из скрипта, как самые трудные для меня.

PHP:
скопировать код в буфер обмена
  1. function dbconn($autoclean = false, $lightmode = false) {
  2.         global $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_charset;
  3.  
  4.         if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass))
  5.                 die("[" . mysql_errno() . "] dbconn: mysql_connect: " . mysql_error());
  6.  
  7.         mysql_select_db($mysql_db)
  8.                 or die("dbconn: mysql_select_db: " . mysql_error());
  9.  
  10.         mysql_query("SET NAMES $mysql_charset");
  11.  
  12.         userlogin($lightmode);
  13.  
  14.         if (basename($_SERVER['SCRIPT_FILENAME']) == 'index.php')
  15.                 register_shutdown_function("autoclean");
  16.  
  17.         register_shutdown_function("mysql_close");
  18. }


и еще один:

PHP:
скопировать код в буфер обмена
  1. $query = "SELECT t.id, t.moderated, t.moderatedby, t.dostup, t.category, t.incategory, t.voice, t.tryd, t.webdl, (t.leechers + t.remote_leechers) AS leechers,
  2.                 (t.seeders + t.remote_seeders) AS seeders, t.free, t.name, t.size, t.added, t.not_sticky, t.owner, t.rating,
  3.                 c.name AS cat_name, c.image AS cat_pic, i.name AS incat_name, i.image AS incat_pic, d.name AS tryd_name, d.image AS tryd_pic,
  4.                 v.name AS voice_name, v.image AS voice_pic, w.name AS webdl_name, w.image AS webdl_pic,
  5.                 u.class" . ($CURUSER ? ", EXISTS(SELECT * FROM readtorrents WHERE
  6.                 readtorrents.userid = " . sqlesc($CURUSER["id"]) . " AND readtorrents.torrentid = t.id)
  7.                 AS readtorrent" : ", 1 AS readtorrent") . " FROM torrents AS t LEFT JOIN categories
  8.                 AS c ON t.category = c.id LEFT JOIN incategories AS i ON t.incategory = i.id LEFT JOIN 3d AS d ON t.tryd = d.id
  9.                 LEFT JOIN voice AS v ON t.voice = v.id LEFT JOIN webdl AS w ON t.webdl = w.id
  10.                 LEFT JOIN users AS u ON t.owner = u.id $where $orderby $limit";
  11.    // echo $query_string;
  12.         $res = sql_query($query) or die(mysql_error());
 
 Top
andrewkard
Отправлено: 24 Мая, 2018 - 11:18:48
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Меняем
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass))
  3.                 die("[" . mysql_errno() . "] dbconn: mysql_connect: " . mysql_error());
  4.  


на

PHP:
скопировать код в буфер обмена
  1.  
  2. $link = mysqli_connect("localhost", "my_user", "my_password", "world");
  3.  
  4. /* check connection */
  5.     printf("Connect failed: %s\n", mysqli_connect_error());
  6.     exit();
  7. }
  8.  


Это не нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2.  mysql_select_db($mysql_db)
  3.                 or die("dbconn: mysql_select_db: " . mysql_error());
  4.  


Это:



меняем на:
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysqli_set_charset($link, "utf8")) {
  3.     printf("Ошибка при загрузке набора символов utf8: %s\n", mysqli_error($link));
  4.     exit();
  5. }
  6.  


Это:


меняем на:


Так же обращаю внимание на необходимость использования подготовленных запросов:
http://php.net/manual/ru/mysqli.prepare.php
 
 Top
file.shreder
Отправлено: 24 Мая, 2018 - 22:17:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Окт. 2014  


Помог: 2 раз(а)

[+]


Используй лучше какую то библиотеку готовую, для работы с БД. Мне нравится SafeMySQL.

PHP:
скопировать код в буфер обмена
  1. $db = new SafeMySQL();
  2.  
  3. $db->getRow("SELECT `id` FROM........")
  4.  
  5. $db->getAll("SELECT * FROM........")
  6.  
  7. $db->getOne("SELECT `id` FROM........")
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB