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
Форумы портала PHP.SU :: Версия для печати :: функции mysql и mysqli
Форумы портала PHP.SU » » Вопросы новичков » функции mysql и mysqli

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

1. Prizma - 25 Июля, 2012 - 23:43:22 - перейти к сообщению
Почему мануал не советуют использование функций mysql? и предлагает альтернативу mysqli? в последующих версиях php перестанет поддерживать mysql и полностью перейдёт на mysqli? как то влияет скорость выполнения запросов от выбранной функции (mysql или альтернативы mysqli)?

я заметил что они отличаются то впринципе только тем что в mysqli нужно везде пихать параметр $link(идентификатор соединения) есть ли там какие то ещё аспекты которые нужно знать перед употреблением этих функций?
(Добавление)
сразу возник ещё один вопрос возможно ли использовать сразу 2 соединения вот так:

PHP:
скопировать код в буфер обмена
  1. <?
  2. #...
  3. $db = mysql_connect($hostname, $user, $password);
  4. $link = mysqli_connect($hostname, $user, $password)
  5. ?>


если часть скриптов работают на mysql функциях, а новые уже хочу писать на mysqli могу ли я открыть 2 соединения что бы работали и те и другие?
2. Toxa - 25 Июля, 2012 - 23:54:57 - перейти к сообщению
Prizma пишет:
Почему мануал не советуют использование функций mysql?

Какие мануал?

Prizma пишет:
отличаются то впринципе только тем что в mysqli нужно везде пихать параметр $link

не только

Prizma пишет:
если часть скриптов работают на mysql функциях, а новые уже хочу писать на mysqli могу ли я открыть 2 соединения что бы работали и те и другие?

я бы не советовал, т.к. может возникнуть очень большая путаница
3. Prizma - 26 Июля, 2012 - 00:00:15 - перейти к сообщению
Toxa пишет:
Какие мануал?
официальный мануал по php www.php.net
Toxa пишет:
не только
чем ещё?
Toxa пишет:
я бы не советовал, т.к. может возникнуть очень большая путаница
спасибо за совет, но эт я уже решу исходя из ответов на вопросы сам Улыбка
(Добавление)
Цитата:
ПОчему MySQL расширение (ext/mysql), которое я использовал более 10 лет, теперь не рекомендуется использовать? Что я должен использовать вместо него? Как мне обновить свои программы?

Есть три расширения для работы с MySQL, как описано в разделе Выбор MySQL API Старое API не должно использоваться, и когда-нибудь будет будет помеченным как устаревшее и в конце концов удалено из PHP. Так как это расширение очень популярно, то этот процесс будет долгим, но настоятельно рекомендуется писать весь новый код с использованием либо mysqli либо PDO_MySQL.

Скрипты для перехода со старого API пока недоступны, но mysqli API содержит как процедурный так и объектный API, схожие со старым процедурным ext/mysql API.

Нельзя совмещать различные расширения. Поэтому, например передача mysqli соединения в PDO_MySQL или ext/mysql не будет работать.

выразека FAQ из мануала... короче понятненько в целом над перебератся на mysqli потихоньку
4. KingStar - 26 Июля, 2012 - 00:09:29 - перейти к сообщению
если уж ты решил перебираться, то почему не на PDO ???
5. Hawkmoth - 26 Июля, 2012 - 00:10:36 - перейти к сообщению
Наверное, одна из самых популярных статей на эту тему, один из нескольких вариантов перевода:
http://ruseller[dot]com/lessons.php?[dot][dot][dot]b=37&id=1381
Ну и чтобы окончательно закрепить:
http://forum.php.su/topic.php?fo...1&topic=7156

Основываясь в том числе и на этих источниках, выбрал для себя PDO.
С удовольствием выслушаю подкрепленное аргументами альтернативное мнение.
6. Prizma - 26 Июля, 2012 - 00:17:29 - перейти к сообщению
спасибо за предложенную альтернативу статьи уже читаю) PDO имеет место быть Улыбка будем разбиратся думаю так и сделаю
7. KingStar - 26 Июля, 2012 - 00:19:25 - перейти к сообщению
Hawkmoth пишет:
Основываясь в том числе и на этих источниках, выбрал для себя PDO.
С удовольствием выслушаю подкрепленное аргументами альтернативное мнение.


Я с тобой полностью солидарен, когда я пробовал для себя, выбор пал на PDO
8. Prizma - 26 Июля, 2012 - 01:14:37 - перейти к сообщению
начал тренироваться и сразу же возникла проблема, подскажите кто сталкивался вот код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db_driver = 'mysql';
  3. $db_host = 'localhost';
  4. $db_user = 'root';
  5. $db_password = '';
  6. $db_name = 'my_db';
  7. $db = new PDO($db_driver.':host='.$db_host.';dbname='.$db_name,$db_user,$db_password);
  8. $row = $db->exec('set names utf8;');
  9. $error_array = $db->errorInfo();
  10.  
  11. if($db->errorCode() != 0000)
  12.  
  13. echo "SQL ошибка: " . $error_array[2] . '<br />';
  14.  
  15. if($rows) echo "Количество затронутых строк: " . $rows. "<br />";?>

выводит:
Цитата:
WARNING не возможно задать требуемую кодировку!

почему так получилось?
9. Hawkmoth - 26 Июля, 2012 - 01:37:52 - перейти к сообщению
Определение кодировки указывается в строке параметров дополнительной опцией:
PHP:
скопировать код в буфер обмена
  1. $db = new PDO('mysql:host=localhost;dbname=my_db', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "UTF8"'));
10. Prizma - 26 Июля, 2012 - 02:01:30 - перейти к сообщению
спасибо большое)

 

Powered by ExBB FM 1.0 RC1