#php #mysql #pdo
#php #mysql #pdo
Вопрос:
Допустим, у меня есть эти таблицы в MySQL
table actors
id int 11 primary key auto_increment
name varchar 30
sex varchar 10
table movies
id int 11 primary key auto_increment
name varchar 30
type varchar 30
table actors_movies
actor_id int 11
movie_id int 11
И предположим, что у меня есть форма в HTML, которая позволяет пользователям искать участников по параметрам, которые они определяют.
Например, пользователь может искать только актеров с именем «Джон», или они могут искать актеров мужского пола, которые снимались в фильме типа «Драма», или они могут искать актеров в фильме с именем «Бэтмен», которые являются женщинами, или они могут искать актеров, которые снимаются в фильме «Драма» И / или (они выбирают, в каком) фильме «Триллер».
Мое решение — это очень неуклюжий PHP-скрипт, который по частям создает подготовленную инструкцию для запроса базы данных с помощью этого в зависимости от того, какие параметры ему заданы.
Мое решение работает, но является ли это единственно возможным способом? Я нахожу свое решение действительно неуклюжим, и по мере добавления большего количества возможных параметров оно становится только хуже.
потому что меня попросили привести пример того, что я делаю
вот некоторый псевдокод для того, что в основном делает мой скрипт
query = "Select * from actors
left join actors_movies on actors.id = actors_movies.actor_id
left join movies on movies.id = actors_movies.movie_id"
Then for each possible parameter it does something like this
if(actors.sex given)
query append("where actors.sex ="
for each sex given
query append sex and either AND/OR
надеюсь, это имеет смысл
Комментарии:
1. Вы получите лучшие предложения, если покажете свою текущую реализацию, вы знаете…
2. @Ekin ok я добавил это, хотя не уверен, что это имеет смысл
3. Вы спрашиваете о том, что обычно называют построителем запросов. Вы ищете рекомендации по созданию запросов третьими сторонами или вы хотите / должны создать свои собственные?
4. @Khyron если у вас есть какие-то предложения, пожалуйста, дайте мне знать! если бы вы могли назвать мне имена некоторых сторонних разработчиков, тогда это было бы здорово, или если создание моего собственного не слишком сложно, тогда это тоже хорошо.
5. Честно говоря, это больше зависит от ваших требований и того, насколько силен ваш запрос foo относительно того, что кто-нибудь порекомендовал бы. В вашем случае я бы предложил поискать «PDO query builder» и взглянуть на некоторые библиотеки и примеры / документацию. С точки зрения построения вашего собственного, простой способ — это массив пар значений ключей, где ключи являются столбцами таблицы, а значения — параметрами поиска, затем напишите функцию для преобразования этого массива в строку.