gpt4 book ai didi

PHP PDO & SQL 搜索通配符绑定(bind)参数

转载 作者:行者123 更新时间:2023-11-29 11:43:30 26 4
gpt4 key购买 nike

我正在尝试为网站创建一个搜索功能,并创建了从 PHPMYADMIN 生成的 sql 代码,请参见下文;

$sql = "SELECT * FROM `bg85ow`.`sessions` WHERE CONVERT(`SessionName` USING utf8) LIKE '%:SessionName1%'";

这是处理查询的 PHP 代码;

//bind params
$SessionName1 = filter_input(INPUT_GET, 'search');
$stmt -> bindValue(':SessionName1', $SessionName1, PDO::PARAM_STR);

//execute
$success = $stmt -> execute();

if (!$success){
print $stmt->errorInfo()[2]; //PDO driver error message
}

else{
}

//array
$r = $stmt->fetchAll(PDO::FETCH_ASSOC);
$dbh = null;

if(!$r)
{
echo "No Results";
}

foreach ((array) $r as $row) {
echo $row['SessionId'];
echo $row['SessionName'];
}

出于某种原因,这不会返回任何结果,execute 部分工作正常并通过了成功测试,但一旦到达数组,它就不会返回任何结果。

我检查过,$SessionName1 中有来自搜索的术语,因此它可以正常传递给查询。

当我将 %:SessionName1% 更改为 football (我正在测试的搜索词)时,代码返回结果正常,但一旦更改回 :SessionName1 即使搜索词完全相同,它也不会返回结果。

任何人都可以看到我做错了什么吗,我花了很长时间看这个,但看不到错误。

我到处搜索这个问题的答案,但找不到专门针对这个问题的答案,而且我是 PHP 和 SQL 的初学者。

最佳答案

试试这个例子:检查你哪里错了。

// Get the keyword from query string
$keyword = $_GET['keyword'];
// Prepare the command
$sth = $dbh->prepare('SELECT * FROM `users` WHERE `firstname` LIKE :keyword');
// Put the percentage sing on the keyword
$keyword = "%".$keyword."%";
// Bind the parameter
$sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);

关于PHP PDO & SQL 搜索通配符绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35366406/

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