PHP mysql准备语句- SELECT


PHP MySQLi prepared statements - SELECT

我的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的结果。如何解决?

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

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

你可以建立你的查询字符串

$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

所指向的字段值

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