sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kontrollerer jeg, om tabelnavne er gyldige i Propel?

Du kan parse dit schema.xml med PHP's simplexml.

$xml = simplexml_load_file('schema.xml');
$tableExists = 0 < count($xml->xpath("table[@phpName='$tableName']"));

Glem ikke at filtrere brugernes input til $tableName , ellers er det muligt at indsætte egen forespørgsel i xpath. For at få bedre ydeevne bør du cache dine resultater.

Endnu bedre ville være, hvis du opretter et hash-kort med alle tabeller baseret på dit schema.xml , cache dette hash-kort og tjek mod dette hver gang.

$hashMap = $foo->getCache('tables');

if (!$hashMap) {
    $xml = simplexml_load_file('schema.xml');
    $tables = $xml->xpath("table");
    foreach ($tables as $table) {
        $hashMap[$table['phpName']] = true;
    }
    $foo->setCache('tables', $hashMap);
}

$tableExists = isset($hashMap[$tableName]);

I dette tilfælde er det egentlig ikke nødvendigt at filtrere brugerens input.



  1. Sådan gør du:Grails 3.0.2 + Oracle Database 12c?

  2. Proceduren for at sløjfe gennem kommasepareret streng virker ikke

  3. få værdi fra MySQL-database med PHP

  4. SQL Server Transaction Log — Del 2