Спустя 3 минуты, 1 секунда (20.04.2012 - 15:16) m4a1fox написал(а):
Deert
Цитата |
MySQLi или MySQL >>> вот в чем вопрос. |
PDO
Спустя 3 минуты, 35 секунд (20.04.2012 - 15:20) killer8080 написал(а):
Цитата |
Recommended API It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development. |
Спустя 15 секунд (20.04.2012 - 15:20) Shkiper написал(а):
А мануальчик, если можно???
Спустя 4 минуты, 56 секунд (20.04.2012 - 15:25) dadli написал(а):
Спустя 1 минута (20.04.2012 - 15:26) killer8080 написал(а):
Цитата (Deert @ 20.04.2012 - 16:20) |
А мануальчик, если можно??? |
Спустя 55 секунд (20.04.2012 - 15:27) Shkiper написал(а):
Цитата |
Всем здрасти. Недавно наткнулся на статью про MySQLi. Там говориться что он гораздо лучше, безопаснее и "легкий". Так ли это??? Стоит ли на него переходить??? Если стоит то где можно взять документацию на русском??? |
Спустя 5 минут, 59 секунд (20.04.2012 - 15:33) killer8080 написал(а):
переходить на него стоит, хотя бы потому, что это рекомендуют разработчики PHP. Это значит что в скором времени старое расширение попадет в deprecated.
На счет русской документации не знаю, посмотри на php.su или php.ru, может есть.
На счет русской документации не знаю, посмотри на php.su или php.ru, может есть.
Спустя 11 минут, 11 секунд (20.04.2012 - 15:44) glock18 написал(а):
Цитата (killer8080 @ 20.04.2012 - 13:33) |
На счет русской документации не знаю, посмотри на php.su или php.ru, может есть. |
дк ты ж ссылку дал выше на php.net на русском

Спустя 5 минут, 34 секунды (20.04.2012 - 15:50) inpost написал(а):
killer8080
Я не думаю, что старое расширение mysql попадёт в dsprecated, потому что новичков гораздо сложнее учить на mysqli, так как оно тяжелее по своей природе. Пока не изменят функции и не упростят их...
Я не думаю, что старое расширение mysql попадёт в dsprecated, потому что новичков гораздо сложнее учить на mysqli, так как оно тяжелее по своей природе. Пока не изменят функции и не упростят их...
Спустя 1 час, 12 минут, 40 секунд (20.04.2012 - 17:02) glock18 написал(а):
Цитата (inpost @ 20.04.2012 - 13:50) |
killer8080 Я не думаю, что старое расширение mysql попадёт в dsprecated, потому что новичков гораздо сложнее учить на mysqli, так как оно тяжелее по своей природе. Пока не изменят функции и не упростят их... |
а чего их упрощать то. проще и так некуда
Спустя 4 минуты, 4 секунды (20.04.2012 - 17:07) inpost написал(а):
glock18
невозможность работать напрямую. Процедурка требует постоянно первый аргумент указывать, что портит впечатление, если работать через класс, то там не доступна возможность статичного обращения. В итоге работаю через оболочку.
невозможность работать напрямую. Процедурка требует постоянно первый аргумент указывать, что портит впечатление, если работать через класс, то там не доступна возможность статичного обращения. В итоге работаю через оболочку.
Спустя 20 часов, 51 минута, 50 секунд (21.04.2012 - 13:58) killer8080 написал(а):
Цитата (glock18 @ 20.04.2012 - 16:44) |
дк ты ж ссылку дал выше на php.net на русском |
там далеко не все успели перевести на русский

Цитата (inpost @ 20.04.2012 - 16:50) |
killer8080 Я не думаю, что старое расширение mysql попадёт в dsprecated, потому что новичков гораздо сложнее учить на mysqli, так как оно тяжелее по своей природе. Пока не изменят функции и не упростят их... |
Думая это лишь вопрос времени и версии PHP. Если разработчики не рекомендуют его использовать, значит рано или поздно оно таки попадет в deprecated. Да и сложности там надуманные. Если новичкам не говорить, что mysqli сложное, то им будет совершенно пофиг, чего не знать

Если уж говорить о заботе о новичках, разрабов же это не остановило, когда в deprecated записали magic quotes. Никого не волновало, что с переходом на новую версию, появится куча дырявых, говнокодерских сайтов.

Цитата (inpost @ 20.04.2012 - 18:07) |
невозможность работать напрямую. Процедурка требует постоянно первый аргумент указывать, что портит впечатление |
Ну и что? Файловые функции то же требуют постоянно указывать ссылку на ресурс первым аргументом, никого же это не смущает

Цитата (inpost @ 20.04.2012 - 18:07) |
, если работать через класс, то там не доступна возможность статичного обращения. В итоге работаю через оболочку. |
не понял о чем ты

Спустя 41 минута, 32 секунды (21.04.2012 - 14:40) inpost написал(а):
killer8080
Так я и сказал, что использую оболочку синглтон.
Ну как бы сказать, если человек умный, он спросит, почему mysql указывает 1 параметр, а mysqli постоянно надо писать 2 параметра, когда по умолчанию всегда работаю с одним и тем же кодом и выполняю одни и те же действия.
В каждой из функций надо писать лишние символы, а хочется с прогрессом сокращать длину кода, а не увеличивать её впустую...
Вот смотри аналогию, ты общаешься, и каждый раз говоришь свои мысли, ведь они в твоей голове, поэтому абсолютно во всех предложениях вставляй в начале: "я думаю" или "я считаю". Это будет напрягать как тебя, так и окружающих.. Вот твоя фраза:
"Я думаю, Ну и что? Я думаю, Файловые функции то же требуют постоянно указывать ссылку на ресурс первым аргументом, никого же это не смущает , я думаю, что не понял о чем ты , я думаю, что синглтон вроде не отменяли.".
Вот так и тут, нет смысла того, что итак понятно. А кто работает с несколькими базами, у тех и уровень на порядок выше и они будут через оболочки различные работать.
Вот банальный глупый пример недоработки:
mysql_query. Если до этого соединения с БД не было, то берутся параметры по умолчанию из ini для коннекта. При этом select_db нельзя указывать через настройки. Итого функция автоматического коннекта вообще утрачивает смысл в mysql_query. То есть при select_db при отсутствии коннекта - подключится. А при mysql_query - подключится, но выбрать БД не сможет, потому что разрешено указывать: хост,имя,пароль, но не Базу Данных.
Аналогия с mysqli , то есть там указывается, что 1,2,3,4 параметры являются необязательными, в таком случае параметр берётся по умолчанию. При этом указать можно 1,2 и 3-ий параметр, а 4-ый в обязательном порядке необходимо указать(!). Какой смысл первых трёх по умолчанию, если в случае необходимого указания четвертого - мы автоматом будем указывать первые 3...
Ну да, если исключением из правил - свои сервера, в таком случае и первые 3 параметра так же должны быть связаны с четвертым. А то первые 3 можно указать на любом хостинге, а 4-ый только на своём, вот и лазишь по инету ищешь ответ банально на то, чего разрабы не предусмотрели.
Так я и сказал, что использую оболочку синглтон.
Ну как бы сказать, если человек умный, он спросит, почему mysql указывает 1 параметр, а mysqli постоянно надо писать 2 параметра, когда по умолчанию всегда работаю с одним и тем же кодом и выполняю одни и те же действия.
В каждой из функций надо писать лишние символы, а хочется с прогрессом сокращать длину кода, а не увеличивать её впустую...
Вот смотри аналогию, ты общаешься, и каждый раз говоришь свои мысли, ведь они в твоей голове, поэтому абсолютно во всех предложениях вставляй в начале: "я думаю" или "я считаю". Это будет напрягать как тебя, так и окружающих.. Вот твоя фраза:
"Я думаю, Ну и что? Я думаю, Файловые функции то же требуют постоянно указывать ссылку на ресурс первым аргументом, никого же это не смущает , я думаю, что не понял о чем ты , я думаю, что синглтон вроде не отменяли.".
Вот так и тут, нет смысла того, что итак понятно. А кто работает с несколькими базами, у тех и уровень на порядок выше и они будут через оболочки различные работать.
Вот банальный глупый пример недоработки:
mysql_query. Если до этого соединения с БД не было, то берутся параметры по умолчанию из ini для коннекта. При этом select_db нельзя указывать через настройки. Итого функция автоматического коннекта вообще утрачивает смысл в mysql_query. То есть при select_db при отсутствии коннекта - подключится. А при mysql_query - подключится, но выбрать БД не сможет, потому что разрешено указывать: хост,имя,пароль, но не Базу Данных.
Аналогия с mysqli , то есть там указывается, что 1,2,3,4 параметры являются необязательными, в таком случае параметр берётся по умолчанию. При этом указать можно 1,2 и 3-ий параметр, а 4-ый в обязательном порядке необходимо указать(!). Какой смысл первых трёх по умолчанию, если в случае необходимого указания четвертого - мы автоматом будем указывать первые 3...
Ну да, если исключением из правил - свои сервера, в таком случае и первые 3 параметра так же должны быть связаны с четвертым. А то первые 3 можно указать на любом хостинге, а 4-ый только на своём, вот и лазишь по инету ищешь ответ банально на то, чего разрабы не предусмотрели.
Спустя 9 минут, 29 секунд (21.04.2012 - 14:49) Shkiper написал(а):
Старенький, добренький MySQL больше используют и он более популярен. Лучше использовать, а потом можно будет и перейти на MySQLi(наверно). Да и вот что хотел спросить. Смотря, в глупом прошлом, уроки попова, я кое-что заметил. На конце MySLQ запроса он постоянно пишет $bd, в которой заключаеться подключение к БД. Если не указывать $bd, то оно и так будет работать, хотел узнать обязательно ли её еказывать или это просто избыточность кода ????

Спустя 2 минуты, 29 секунд (21.04.2012 - 14:52) inpost написал(а):
Deert
Он необходим для указания с какой БД ты работаешь, если ты работаешь с несколькими. Если сайт на одной, то он является необязательным параметром, о чём свидетельствуют квадратные скобки на php.net.
Если он нужен был, то без него была бы ошибка. А необязательные дополнительные параметры - на усмотрение автора для расширения функционала стандартной функции. Сейчас мои самописные функции так же имеют как обязательные так и не обязательные параметры. Это лишь расширение возможного функционала.
Он необходим для указания с какой БД ты работаешь, если ты работаешь с несколькими. Если сайт на одной, то он является необязательным параметром, о чём свидетельствуют квадратные скобки на php.net.
Если он нужен был, то без него была бы ошибка. А необязательные дополнительные параметры - на усмотрение автора для расширения функционала стандартной функции. Сейчас мои самописные функции так же имеют как обязательные так и не обязательные параметры. Это лишь расширение возможного функционала.
Спустя 25 минут, 8 секунд (21.04.2012 - 15:17) killer8080 написал(а):
Цитата (inpost @ 21.04.2012 - 15:40) |
Ну как бы сказать, если человек умный, он спросит, почему mysql указывает 1 параметр, а mysqli постоянно надо писать 2 параметра, когда по умолчанию всегда работаю с одним и тем же кодом и выполняю одни и те же действия. |
Объяснение очень простое. Myqsli изначально объектный, процедурный стиль введен как раз для того, чтобы облегчить переход со старого расширения, это всего лишь интерфейс к объектам (грубо говоря). По тому и нужно передавать ссылку на объект. Вообще нет смысла использовать процедурный стиль, ничего сложного в объектном нет.
Вот простой пример на классическом mysql расширении
mysql_connect('localhost', 'root', '');
mysql_select_db('dbname');
$result = mysql_query("SELECT * FROM `table`");
if(mysql_num_rows($result) > 0){
while($row = mysql_fetch_assoc($result)){
...
}
}
и вот его аналог на mysqli в объектном стиле
$db = new mysqli('localhost', 'root', '', 'dbname');
$result = $db->query("SELECT * FROM `table`");
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
...
}
}
Чем он сложнее процедурного?
Цитата (inpost @ 21.04.2012 - 15:40) |
Вот банальный глупый пример недоработки: mysql_query. Если до этого соединения с БД не было, то берутся параметры по умолчанию из ini для коннекта. При этом select_db нельзя указывать через настройки. Итого функция автоматического коннекта вообще утрачивает смысл в mysql_query. То есть при select_db при отсутствии коннекта - подключится. А при mysql_query - подключится, но выбрать БД не сможет, потому что разрешено указывать: хост,имя,пароль, но не Базу Данных. |
ну это камень в огород старого расширения. Хотя я никогда не считал такой стиль работы правильным, всегда в начале устанавливаю соединение, а только потом использую
Цитата (inpost @ 21.04.2012 - 15:40) |
Аналогия с mysqli , то есть там указывается, что 1,2,3,4 параметры являются необязательными, в таком случае параметр берётся по умолчанию. При этом указать можно 1,2 и 3-ий параметр, а 4-ый в обязательном порядке необходимо указать(!). Какой смысл первых трёх по умолчанию, если в случае необходимого указания четвертого - мы автоматом будем указывать первые 3... |
отчего же? Совсем не обязательно указывать предыдущие аргументы
$db = new mysqli(null, 'root', null, 'dbname');
PS че то подсветка синтаксиса глючит :)
Спустя 2 часа, 18 минут, 51 секунда (21.04.2012 - 17:36) inpost написал(а):
killer8080
Внутри других функций нельзя же обращаться непосредственно к $db из твоего примера.
То есть $db->query уже не будет работать. mysqli_query то можно. Как в таком случае быть? Я сделал через синглон-оболочку, сделал класс статичным, и к тему уже обращаюсь из других функций и классов. Но это уже не та простота, что ты показал выше.
Внутри других функций нельзя же обращаться непосредственно к $db из твоего примера.
То есть $db->query уже не будет работать. mysqli_query то можно. Как в таком случае быть? Я сделал через синглон-оболочку, сделал класс статичным, и к тему уже обращаюсь из других функций и классов. Но это уже не та простота, что ты показал выше.
Спустя 45 минут, 27 секунд (21.04.2012 - 18:21) Shkiper написал(а):

Спустя 4 часа, 57 минут, 39 секунд (21.04.2012 - 23:19) killer8080 написал(а):
Цитата (inpost @ 21.04.2012 - 18:36) |
Внутри других функций нельзя же обращаться непосредственно к $db из твоего примера. |
global $db;
Цитата (inpost @ 21.04.2012 - 18:36) |
То есть $db->query уже не будет работать. mysqli_query то можно. |
mysqli_query() так же требует наличие переменной указывающей на соединение, так что в этом плане процедурный стиль mysqli не имеет преимуществ перед объектным.
Цитата (inpost @ 21.04.2012 - 18:36) |
Я сделал через синглон-оболочку, сделал класс статичным, и к тему уже обращаюсь из других функций и классов. Но это уже не та простота, что ты показал выше. |
В конечном итоге, в продакшине все равно же не будешь работать напрямую с нативными функциями.

Спустя 23 минуты, 35 секунд (21.04.2012 - 23:43) inpost написал(а):
global $db; - лишняя строчка.
первый аргумент - лишняя часть.
первый аргумент - лишняя часть.
Спустя 6 часов, 35 минут, 1 секунда (22.04.2012 - 06:18) Shkiper написал(а):
