K SQL dotazu se automaticky připojí LIMIT

Re: K SQL dotazu se automaticky připojí LIMIT

autor David Mudrák -
Počet odpovědí: 0
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři

Mno, já tam vidím ještě pár problémů.

  • Předpona názvů tabulek mdl_ je konfigurovatelná, tudíž ji nemůžete takto natvrdo zapsat do kódu (na jiném serveru, který používá jinou či žádnou, by to nefungovalo).
  • Váš způsob doplňování proměnných do dotazu je potenciálně nebezpečný, proto se používají vázané parametry.
  • Klauzule LIMIT není obecně cross-db kompatibilní, proto ji mají $DB metody implementovanou zvlášť.

Váš kód by měl vypadat nějak takto

$records = $DB->get_records_sql("SELECT * FROM {dotaznik_vyplneno} WHERE dotaznik = ? ORDER BY cas_odevzdani",
    array($dotaznik->id), $radkyod, $pocetradku);

případně ještě lépe

$records = $DB->get_records("dotaznik_vyplneno", array("dotaznik" => $dotaznik->id), "cas_odevzdani",
    "*", $radkyod, $pocetradku);

Podrobnosti na http://docs.moodle.org/dev/Data_manipulation_API