sql >> Databasteknik >  >> RDS >> Mysql

Hur kontrollerar jag om tabellnamn är giltiga i Propel?

Du kan analysera ditt schema.xml med PHPs simplexml.

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

Glöm inte att filtrera användarnas indata för $tableName , annars är det möjligt att injicera en egen fråga i xpath. För att få bättre prestanda bör du cachelagra dina resultat.

Ännu bättre skulle vara om du skapar en hashkarta med alla tabeller baserade på ditt schema.xml , cachelagra denna hashkarta och kontrollera mot denna varje gång.

$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 det här fallet är det egentligen inte nödvändigt att filtrera användarens inmatning.



  1. Generera klass från databastabell

  2. Det säger att jag inte har någon rad vald?

  3. Hur ansluter jag till MySQL Database?

  4. Spåra utgående anslutningar