sql >> データベース >  >> RDS >> Mysql

テーブル名がPropelで有効かどうかを確認するにはどうすればよいですか?

    PHPのsimplexmlを使用してschema.xmlを解析できます。

    $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. チェックボックス値をデータベースに挿入する

    2. PHP/MYSQLでユーザー名がすでに存在するかどうかを確認する方法

    3. ユーザーに表示するのではなく、codeigniterクエリエラーを確認します

    4. システムビューの定義を表示/スクリプト化する方法は?