2011-07-01 8 views
2

ここでは、他のPDOはうまく動作しますが、これはありません。私は試しましたこのPDOには何が問題なのですか?

execute(array(':t'=>$table)); 

成功しません。アイデア?

public function __construct($table){ 
     try{ 
       $pdocnx = new PDO("mysql:host=localhost;dbname=sigcat",'root',''); 
       $stmt = $pdocnx->prepare('select * from sigcat.:t'); 
       $stmt->bindParam(':t', urldecode($table), PDO::PARAM_STR,45); 
       $stmt->execute(); 
       $row = $stmt->fetchAll(PDO::FETCH_ASSOC); 
       var_dump($row); 
     }catch(Exception $e){ 
      echo $e->getMessage(); 
     } 

    } 

「supplies」には多くのレコードがありますが、array(0){}が返されます。私は$ _GET ['table']で 'table'パラメータを取得しています。しかし、例外はありません。

答えて

2

テーブル名はバインドできません。値はバインドできません。

有効な名前のリストを維持し、有効なリストに文字列が含まれていることを確認します。

有効な名前のリストを作成できない場合は、おそらく間違っていると思われます。このことができます

public function myFunction($table){ 
    $st = "SELECT FROM `" . $table ."` ..some sql"; 
    $statement->prepare($st); 
    $statement->execute(); 

} 

希望:あなたはこのような卑劣なトリックを行うことができますので

+0

ありがとうございました。スイッチ+ mysql_list_tablesで私はそれを達成します。 – Felix

-1

あなたは、テーブルをバインドすることはできません。

関連する問題