Bezpieczne wdrożenie „konfigurowalnego” systemu łączenia
tło
Witam, rozwijam eksperymentalne / edukacyjne narzędzie w PHP i MySQL. Jestem nowym użytkownikiem SQL, ale od początku chcę robić rzeczy we właściwy sposób. Używam instrukcji przygotowanych do PDO dla wszystkich zmiennych podstawień, a wszędzie możliwe jest backticking (dlatego, jak rozumiem, nie będzie przenośny do baz danych innych niż MySQL). Jeśli chodzi o mój problem, mam pomysł, jak iść dalej, ale implementacja zajmie mi kilka godzin (jestem nowy nawet w składni SQL), więc w międzyczasie pomyślałem, że najpierw stworzę pytanie na wypadek, gdyby ktoś mógł krzyczeć: „To nie jest sposób na to!” i oszczędzaj mi godzin wysiłku.
Problem
Chciałbym utworzyć interfejs, w którym użytkownik wybrałby menu rozwijane:
stółA
,jedno lub więcej pól na tej tabeli, np.A.x
iA.y
,stółB
,jedno lub więcej pól na tej tabeli, np.B.z
iB.y
,a po złożeniu kod wykona połączenie wewnętrzne, dopasowując odpowiednio każde pole, np.A.x = B.z
, A.y = B.y
itd. i zwróć wszystkie dopasowane wiersze.
Mój plan jest po prostu wygenerowaćINNER JOIN
Instrukcja SQL, przechodzenie przez pola i wstawianie symboli zastępczych (?
), wiążąc odpowiednie parametry i ostatecznie wykonując instrukcję.
Czy jest to łatwiejszy sposób? Czy jest na to lepszy sposób? Czy będzie to w jakiś sposób możliwe do wykorzystania?
Z góry bardzo dziękuję. Jeśli nikt nie odpowie przed zakończeniem (wątpliwe), opublikuję moje rozwiązanie.
Misc.
Załóżmy, że sprawdzę poprawność
że użytkownik wybiera taką samą liczbę pól pomiędzyA
iB
,że istnieją pola i tabele,itp.i że nazwy pól nie muszą być identyczne: zostaną dopasowane w kolejności. (Zwróć uwagę na inne szczegóły, o których mógłbym nie wiedzieć!)
Ostatecznie celem jest zapisanie tych wyborów w tabeli „ustawień”. W efekcie użytkownicy tworzą „widoki”, które chcieliby zobaczyć za każdym razem, gdy wracają.