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 回答