Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.11.2016, 17:41
|
|||
|---|---|---|---|
|
|||
Грамотная работа с препейред стейтмент |
|||
|
#18+
Использую данный mysqli класс для работы с БД https://github.com/joshcam/PHP-MySQLi-Database-Class#running-raw-sql-queries. Иногда появляется необходимость писать джойн с таблицей из другой базы. Для выполнения запросов используется конструкция типа "$db->rawQuery", где $db - параметры подключения к БД (среди эти параметров указана дефолт база). Так вот, если мне необходимо выполнить запрос в котором используется друга база, возникает вопрос, как же передать имя базы в конструкцию? Вот пример: "$db->rawQuery('select a.name from name a, another_db.age b where a.id=b.id and b.age=?', Array (99))". Использование another_db в самом запросе является небезопасным. Подскажите как решить это, если здесь можно что-то подсказать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2016, 19:13
|
|||
|---|---|---|---|
Грамотная работа с препейред стейтмент |
|||
|
#18+
Имена полей вида `database_1`.`table_1`.`field_1` должны работать. Аналогично и с именами таблиц. Нужно только, чтобы пользователь имел доступ на обе базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2016, 20:20
|
|||
|---|---|---|---|
|
|||
Грамотная работа с препейред стейтмент |
|||
|
#18+
Может я что-то не понял или не так выразился, но я не хочу использовать конструкцию типа "$db->rawQuery('select a.name from name a, another_db.age b where a.id=b.id and b.age=?', Array (99))", в которой база "another_db" для второй таблицы указана в явном виде. Для первой таблицы база подставляется из свойств $db и она не указана в конструкции запроса. Не знаю, может это выглядит странно, но что-то мне подсказывает, что не правильно указывать имя базы в самом запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2016, 20:27
|
|||
|---|---|---|---|
Грамотная работа с препейред стейтмент |
|||
|
#18+
andrey10что-то мне подсказывает, что не правильно указывать имя базы в самом запросе.Авторы документации считают иначе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2016, 20:49
|
|||
|---|---|---|---|
|
|||
Грамотная работа с препейред стейтмент |
|||
|
#18+
Хм. Значит, при инициализации соединения дефолтная база (new mysqli("localhost", "my_user", "my_password", "db" );) указывается просто так, для удобства, а не в целях безопасности? То есть вот такой запрос "$mysqli->query("select name from db_name.table_name")", где не используется дефолтная база, считается нормальным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&mobile=1&tid=1460862]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 461ms |

| 0 / 0 |
