は、SQLのからに文字列をCONCATないでください少しの助けをいただければ幸いです
$query = "SELECT * FROM . $strTable . where .....;
のようになります方法です。それぞれのテーブルにクラスを使用しようとすると、tablename変数を解析してクラスをインスタンス化することができます。その内部では、テーブル名を持つプロパティがあります。このようにクエリを作成するのは非常に危険です.SQLインジェクションと呼ばれるものがあり、そのようなコードは招待状です。このコードは、学習して進化させるための生のサンプルにすぎません。
例えば:行うか、またはこのようなあなたのクエリを作成していないについてのコメントのほかに
class atable {
$tablename = 'tablename';
$pid = null;
public function generateSQL()
{
$sql = "SELECT * FROM {$this->tablename}";
if (!empty($this->pid)
{
$sql .= " WHERE idcolumn = {$this->pid} ";
}
public function setPid($pid)
{
$this->pid = (integer) $pid;
}
}
$class = $_POST['tablename-parameter'];
$table = new $class();
$sql = $table->generateSQL();
Please read this
aroung単一引用符を持っていることを確認してくださいSQL。クエリを事前定義します。それらを一緒にパッチしないでください! –
あなたの質問をエコーして、問題を簡単に見つけられるようにします –
これを次のように変更します: - '$ query =" SELECT * FROM $ strTable where ..... ";' –