PHP MySQLi编写语句 - SELECT

时间:2014-06-02 19:48:12

标签: php mysqli

我的SELECT语法有问题。 代码:

$stmt = $this->con->prepare("SELECT ? FROM `shop_items` WHERE `id` = ?");

$stmt->bind_param("si", $what, $itemsId);

$stmt->execute();

$stmt->bind_result($res);

$stmt->fetch();

echo $res;

当我想选择“name”时,它会回显“name”而不是DB的结果。怎么解决?

2 个答案:

答案 0 :(得分:5)

占位符?只能在预备语句中用于替换值,而不能用于字段名称,表名称或语句。

您正在尝试将其用于字段名称。

您可以建立查询字符串

$stmt = $this->con->prepare("SELECT " . $what . " FROM `shop_items` WHERE `id` = ?");

但是你必须确保你可以信任$what内的内容以避免sql注入。

否则你可能会获得所有字段

$stmt = $this->con->prepare("SELECT * FROM `shop_items` WHERE `id` = ?");

获取关联数组中的结果(请参阅http://it1.php.net/manual/en/mysqli-result.fetch-assoc.php),然后仅获取$what指向的字段值

答案 1 :(得分:2)

看起来你在SELECT之后使用问号(?)。它应该是*符号,你可以从'shop_items'中选择它。你可以再试一次。

相关问题