gpt4 book ai didi

php - 使用 PDO 从数据库中获取单个单元格

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:31 24 4
gpt4 key购买 nike

我正在尝试从我的数据库中获取一段数据,但如果可能的话,我只想使用 PDO 语句获取一个单元格。

下面是表格的截图

enter image description here

表名叫heating

我正在尝试从名为“garage”且行 id = 3 的列中获取数据

我尝试了很多方法,但总是失败。以下是我目前所拥有的,但出于某种原因只返回列名称车库。

我正在使用以下给我命名为 garage

$room = 'garage';

require_once "connect.php";

$sql = 'SELECT :name FROM heating WHERE id = 3';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $room);
$stmt->execute();

$sw = $stmt->fetch();
echo $sw[0];

如果我执行以下操作,我会得到正确的结果,但我想用变量替换 garage

$sql = 'SELECT garage FROM heating WHERE id = 3';
$stmt = $pdo->prepare($sql);
$stmt->execute();

$sw = $stmt->fetch();
echo $sw[0];

最佳答案

您可以创建列名称的白名单,并使用它来选择正确的列。您可以在 in_array 的帮助下对照白名单检查该列.第三个参数非常重要,因为它检查字符串是否为字符串。只有这样,您才能使用 PHP concatenation operator 安全地将 SQL 与您的 PHP 变量连接起来。 .为了更好地衡量,列名应该用反引号括起来,以防您的任何列名是保留字或包含特殊字符。

$whiteListOfHeating = [
'keyName',
'den',
'WC1',
'hallway',
'garage'
];

$room = 'garage';
if (in_array($room, $whiteListOfHeating, true)) {
$sql = 'SELECT `'.$room.'` FROM heating WHERE id = 3';
$stmt = $pdo->prepare($sql);
// ...
} else {
echo 'Invalid column name specified!';
}

关于php - 使用 PDO 从数据库中获取单个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com