Mysql
 sql >> база данни >  >> RDS >> Mysql

Мога ли да параметризирам името на таблицата в подготвено изявление?

Краткият отговор на вашия въпрос е "не".

В най-строгия смисъл, на ниво база данни, подготвените изрази позволяват само обвързване на параметри за битове „стойности“ на SQL израза.

Един от начините за мислене за това е „неща, които могат да бъдат заменени по време на изпълнение на оператора, без да се променя значението му“. Имената(ата) на таблицата не е една от тези стойности по време на изпълнение, тъй като определя валидността на самия SQL оператор (т.е. кои имена на колони са валидни) и промяната му по време на изпълнение потенциално би променила дали SQL операторът е бил валиден.

На малко по-високо ниво, дори в интерфейси на база данни, които емулират подмяна на параметри на подготвени изрази, а не действително изпращат подготвени изрази към базата данни, като PDO, което би могло да ви позволи да използвате заместител навсякъде (тъй като заместителят се заменя, преди да бъде изпратен до базата данни в тези системи), стойността на заместващия елемент на таблицата би била низ и би била затворена като такава в SQL изпратения към базата данни, така че SELECT * FROM ? с mytable тъй като параметърът всъщност ще изпрати SELECT * FROM 'mytable' към базата данни, която е невалиден SQL.

Най-добрият ви залог е просто да продължите с

SELECT * FROM {$mytable}

но тиабсолютното трябва да има бял списък с таблици, срещу които първо проверявате, ако този $mytable идва от въвеждането на потребителя.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете се към MySQL сървър през SSH в PHP

  2. Мигриране на MySQL към PostgreSQL на AWS RDS, част 3

  3. Използване на OpenVPN за защитен достъп до вашия клъстер от база данни в облака

  4. Как да получите броя на редовете в MySQL таблицата с помощта на PHP?

  5. Намерете най-честата стойност в SQL колона