gpt4 book ai didi

php - PDO Mysql WHERE LIKE 查询实现

转载 作者:行者123 更新时间:2023-11-29 13:24:44 25 4
gpt4 key购买 nike

我在类中有这个简单的函数:

public function getSearchResults($selectedMethod, $query)
{

$this->_query = '%'.$query.'%';
$this->_selectedMethod = $selectedMethod;

$db = mysql_init();
$sql = "SELECT * FROM plantsRecords WHERE ? LIKE ?";
$prq = $db->prepare($sql);

$prq->bindValue(1,$this->_selectedMethod,PDO::PARAM_STR);
$prq->bindValue(2,$this->_query,PDO::PARAM_STR);

$prq->execute();
}

问题在于 WHERE 和 LIKE 发生了一些问题。如果我放置一个标准的column_name,则查询可以工作,但如果我用 ? 分配它,则不行。我在这个网站上阅读了所有类似的问题,但每个人都有 WHERE 语句标准的参数。

最佳答案

您无法将列名称绑定(bind)为参数。您需要执行以下操作:

$sql = "SELECT * FROM plantsRecords WHERE " . $this->_selectedMethod . " LIKE ?";
$prq = $db->prepare($sql);
$prq->bindValue(1, $this->_query,PDO::PARAM_STR);
$prq->execute();

您需要确保用户没有选择$this->_selectedMethod。如果用户选择它,那么您需要将允许的列名称列入白名单。

关于php - PDO Mysql WHERE LIKE 查询实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301032/

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