Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да проверя дали имената на таблици са валидни в Propel?

Можете да анализирате своя schema.xml с PHP simplexml.

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

Не забравяйте да филтрирате въведеното от потребителите за $tableName , в противен случай е възможно да инжектирате собствена заявка в xpath. За да имате по-добра производителност, трябва да кеширате резултатите си.

Още по-добре би било, ако създадете хеш карта с всички таблици въз основа на вашия schema.xml , кеширайте тази хеш карта и проверявайте всеки път.

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

В този случай всъщност не е необходимо да филтрирате въведеното от потребителя.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчислете децил в MySQL въз основа на суми

  2. Изберете всички записи, които не отговарят на определени условия в обединена таблица

  3. MySQL UPDATE добавя данни в колона

  4. Как да принудим имената на таблици, чувствителни към главни букви?

  5. mysql проверка на сортиране на таблица