Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sprawdzić, czy nazwy tabel są poprawne w Propelu?

Możesz parsować swój schema.xml za pomocą simplexml PHP.

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

Nie zapomnij filtrować danych wprowadzanych przez użytkowników dla $tableName , w przeciwnym razie możliwe jest wstrzyknięcie własnego zapytania do xpath.Aby uzyskać lepszą wydajność, należy buforować wyniki.

Jeszcze lepiej byłoby, gdybyś utworzył mapę mieszania ze wszystkimi tabelami na podstawie Twojego schema.xml , buforuj tę mapę mieszania i sprawdzaj ją za każdym razem.

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

W tym przypadku nie jest konieczne filtrowanie danych wprowadzanych przez użytkownika.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przenieść model między dwiema aplikacjami Django (Django 1.7)

  2. Czy wyższe wiersze liczą się w mysql explain oznacza dobre czy złe?

  3. Problem z demonem MySQL

  4. Przenoszenie MySql z serwera Windows na linux

  5. Dlaczego mój skrypt docker-entrypoint-initdb.d (określony w docker-compose.yml) nie jest wykonywany w celu zainicjowania nowego wystąpienia MySQL?