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

Come posso verificare se i nomi delle tabelle sono validi in Propel?

Puoi analizzare il tuo schema.xml con simplexml di PHP.

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

Non dimenticare di filtrare l'input degli utenti per $tableName , altrimenti è possibile inserire la propria query in xpath. Per avere prestazioni migliori dovresti memorizzare nella cache i risultati.

Ancora meglio sarebbe se crei una mappa hash con tutte le tabelle basate sul tuo schema.xml , memorizza nella cache questa mappa hash e controllala ogni volta.

$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]);

In questo caso non è proprio necessario filtrare l'input dell'utente.