MySQLi准备结果不符合预期

时间:2014-04-27 14:22:44

标签: php database mysqli prepare

我正在尝试从我的数据库表'成员'中检索一个结果。使用准备好的电话。

$favid = 1;
$type = "favdeal";
$action = 1;
$user_id = 1;

$stmt = $mysqli->prepare("SELECT ? FROM members WHERE id=?");
$stmt->bind_param('ss', $type, $user_id);
$stmt->execute();
$stmt->bind_result($favs);
while ($stmt->fetch()) {
    print($favs);
}
$stmt->close();

这是我设法得到任何结果的唯一方法。

该表格中有一个名为' favdeal'它的值为' 2'在里面。 打印结果返回列的名称而不是值。

所以我的问题是如何获得价值' 2'而不是列的名称?

1 个答案:

答案 0 :(得分:1)

您不能像SELECT那样绑定列{(em>或表)与SELECT ?的绑定。

  • 选择实际列。

或者,如果您想动态地执行此操作,则需要使用变量。

示例:SELECT $type< =允许。

但是,使用WHERE子句时,列名可以绑定。

示例:SELECT column FROM table WHERE column=?
你目前使用的是=> WHERE id=?

参考bind_param()

上的手册

<强>脚注:

如果你碰巧使用MySQL保留字(它可能发生),你需要用反引号包装你的列变量。

例如:(如果使用$type="from";)&#34;来自&#34;是一个保守的词。

SELECT `$type` FROM members WHERE id=?

有关MySQL保留字的列表,请访问以下页面: