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.