Tarvitsen SQL-lauseessa taulun nimen muuttujana. Tällä hetkellä teen kaksi eri kyselyä, jossa ensimmäisessä tarkistan, että muuttujana annetun talulun nimi on "laillinen" ja toisessa kyselyssä suoritan varsinaisen kyselyn annettuun tauluun.
Voinko saada tuon mahdutettua yhteen kyselyyn kenties käyttämällä proseduureja?
$pdo = new PDO($pdoParameters[0], $pdoParameters[1], $pdoParameters[2], $pdoParameters[3]); $statement = "SHOW TABLES FROM xxxxx"; $query = $pdo->query($statement); if (in_array($a, $query->fetchAll(PDO::FETCH_COLUMN))) { $statement = "SELECT yyyyy FROM %s"; $statement = sprintf($statement, sprintf("`%s`", $a)); $query = $pdo->query($statement); print json_encode($query->fetchAll(PDO::FETCH_COLUMN), JSON_UNESCAPED_UNICODE); }
En usko, että yhdistämisessä olisi järkeä. Jos nopeus on kynnyskysymys, kannattaa vain laittaa taulujen nimet koodiin tai varmistaa, että ne haetaan vain kerran. Ylipäänsä kyllä taulun nimen antaminen parametrina (ja tarkistaminen) kuulostaa siltä, että teet joko MySQL-hallintapaneelia tai jotain todella tyhmää.
Jos kerran kaikki kannan taulut on "laillisia" tauluja ja logiikka muutenkin noin yksinkertainen kuin tuossa yllä niin voit jättää tuon taulun tarkistuksen kokonaan pois. Tarkistat vain varsinaisen kyselyn paluuarvon joka on false jos kyselyssä on virhe.
Muuten kyllä komppaan Metabolixia että tuo taulun nimen antaminen parametrina vaikuttaa ylipäänsä hölmöltä ajatukselta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.