我目前正在尝试创建一个函数,我可以控制哪个字段和哪些值被拉。这是我想到的,但它不起作用。我没有得到任何错误,它返回一个空数组。
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回显标题。
答案 0 :(得分:1)
预备语句的工作方式是准备问题,然后发送字段的数据。因为第一个'?'是指无法准备的查询的实际部分。 解决方法: a)获取整行并返回您需要的字段
$this->con->prepare("SELECT * FROM Content WHERE id=?");
//.......
return $row->$field;
b)将字段raw插入查询中(尽管可以使用引号)
$this->con->prepare("SELECT `{$field}` FROM Content WHERE id=?");
此外,如果您打算像您描述的那样使用它,那么您可能会对数据库进行大量重复调用