Новые сообщения [новые: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&tablet=1&tid=1460862]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 131ms |
0 / 0 |