0

現在、どのフィールドとどの値を取得するかを制御できる関数を作成しようとしています。これは私が考えていたものですが、機能しません。エラーは発生しません。空の配列が返されます。

public function test ($field, $id) {
  $sql = $this->con->prepare("SELECT ? FROM Content WHERE id=?");
  $sql->bindParam(1, $field);
  $sql->bindParam(2, $id);
  $sql->execute();

  while ($row = $sql->fetch()) {
    echo $row;
  }
}

「SELECT?...」の部分についてはよくわかりません。それが正しい方法かどうかは100%わかりません。基本的な考え方は、次のような場所ならどこでも電話をかけることができるということです。

< ?php $obj = new handler; $obj->test($_GET['Title'], $_GET['id']); ?>これにより、タイトルが正しいIDでエコーされます。

4

1 に答える 1

1

プリペアド ステートメントが機能する方法は、クエリが準備されてから、フィールドのデータが送信されるというものです。最初の「?」準備できないクエリの実際の部分を参照します。回避策: a) 行全体を取得し、必要なフィールドのみを返します

$this->con->prepare("SELECT * FROM Content WHERE id=?");
//.......
return $row->$field;

b) フィールド raw をクエリに挿入します (ただし、引用符を使用できます)。

$this->con->prepare("SELECT `{$field}` FROM Content WHERE id=?");

また、説明した方法のように使用する場合は、データベースに対して多数の重複呼び出しを行っている可能性があります

于 2013-01-16T12:56:46.867 に答える