Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: MySQL | Kahden lauseen yhdistäminen

Cartter [25.09.2013 13:30:06]

#

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);
}

Metabolix [25.09.2013 13:35:29]

#

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ää.

Tukki [25.09.2013 18:21:30]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta