gpt4 book ai didi

php - 如何使用 RedBean 运行 LIKE %..% 查询

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

我想在 Redbean 上运行查询。查询是下面一个

"SELECT * FROM tablename WHERE name LIKE "%querystring%" OR description LIKE "%querystring%"

我试过下面一个

$querystring = "querystring";

R::findOne( 'SELECT * FROM tablename WHERE name LIKE ? OR description LIKE ?', "%$querystring%");

但是,这不起作用,导致错误“标识符不符合 RedBeanPHP 安全策略”。

我尝试的另一件事是基于此:

R::getAll( 'SELECT * FROM table WHERE title LIKE %:title%', [':title' => 'home'] );

这给出了一个 RedBean 错误“undefined offset: 0”

我正在尝试找到一种使用准备好的语句来执行此操作的方法,因此我不想将查询构造为字符串并稍后将其发送到服务器。

最佳答案

您需要的语法如下:

$mySearchString = "es";
$bean = R::find('bean',' name LIKE :name ',
array(':name' => '%' . $mySearchString . '%' )
);

所以正如您所见,LIKE 在 sql 语句中没有使用通配符,因为它是 searchValue 的一部分。您的第一次尝试就在那里,但问题是您已经在引号内编写了 php 变量,因此它没有解决。此外,findOne/find 是 RedBean 的 ORM 功能,它不适用于纯 SQL 字符串。仔细查看文档。如果您需要纯 sql,请像您一样尝试 R:getAll。与此处相同的示例

$mySearchString = "es";
$bean = R::getAll('SELECT * FROM bean WHERE name LIKE :name ',
array(':name' => '%'.$mySearchString.'%' )
);

foreach($bean as $entry) {
echo $entry['name'] . "<br />";
}

关于php - 如何使用 RedBean 运行 LIKE %..% 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22451225/

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