Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie überprüfe ich, ob Tabellennamen in Propel gültig sind?

Sie können Ihre schema.xml mit PHPs simplexml parsen.

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

Vergessen Sie nicht, die Benutzereingaben nach $tableName zu filtern , andernfalls ist es möglich, eine eigene Abfrage in xpath einzufügen. Um eine bessere Leistung zu erzielen, sollten Sie Ihre Ergebnisse zwischenspeichern.

Noch besser wäre es, wenn Sie anhand Ihrer schema.xml eine Hashmap mit allen Tabellen erstellen , diese Hash-Map zwischenspeichern und jedes Mal damit vergleichen.

$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 diesem Fall ist es nicht wirklich notwendig, die Benutzereingaben zu filtern.