Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Грамотная работа с препейред стейтмент / 5 сообщений из 5, страница 1 из 1
10.11.2016, 17:41
    #39345105
andrey10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Грамотная работа с препейред стейтмент
Использую данный 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 в самом запросе является небезопасным. Подскажите как решить это, если здесь можно что-то подсказать :)
...
Рейтинг: 0 / 0
10.11.2016, 19:13
    #39345178
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Грамотная работа с препейред стейтмент
Имена полей вида `database_1`.`table_1`.`field_1` должны работать. Аналогично и с именами таблиц. Нужно только, чтобы пользователь имел доступ на обе базы.
...
Рейтинг: 0 / 0
10.11.2016, 20:20
    #39345206
andrey10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Грамотная работа с препейред стейтмент
Может я что-то не понял или не так выразился, но я не хочу использовать конструкцию типа "$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 и она не указана в конструкции запроса. Не знаю, может это выглядит странно, но что-то мне подсказывает, что не правильно указывать имя базы в самом запросе.
...
Рейтинг: 0 / 0
10.11.2016, 20:27
    #39345207
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Грамотная работа с препейред стейтмент
andrey10что-то мне подсказывает, что не правильно указывать имя базы в самом запросе.Авторы документации считают иначе :)
...
Рейтинг: 0 / 0
10.11.2016, 20:49
    #39345223
andrey10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Грамотная работа с препейред стейтмент
Хм. Значит, при инициализации соединения дефолтная база (new mysqli("localhost", "my_user", "my_password", "db" );) указывается просто так, для удобства, а не в целях безопасности? То есть вот такой запрос "$mysqli->query("select name from db_name.table_name")", где не используется дефолтная база, считается нормальным?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Грамотная работа с препейред стейтмент / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]