教义上的对抗

发布于 2024-10-03 19:05:17 字数 665 浏览 5 评论 0原文

我发现如果我在 Doctrine 中使用 MATCH AGAINST 和 WHERE 语法并不会替换传递的参数。例如,如果我运行以下代码 $

q = Doctrine_Query::create()
    ->select('*')
    ->from('TourismUnit tu')
    ->where('FALSE');
if ($keywords) {
    $keywords_array = $this->parse_keywords($keywords);
    for ($i = 0; $i < sizeof($keywords_array); $i++)
        $q->orWhere("MATCH (name, description) AGAINST ('?*' IN BOOLEAN MODE)", $keywords_array[$i]);
}

没有找到任何结果。 如果他们使用字符串连接似乎可以工作。

 $q->orWhere("MATCH (name, description) AGAINST ('".$keywords_array[$i]."*' IN BOOLEAN MODE)");

我使用原则 1.2.2。

有谁知道为什么在执行sql表达式之前不替换参数?

I found that if I use MATCH AGAINST in Doctrine with WHERE syntax does not replace the parameters passed. For example if I run the following code
$

q = Doctrine_Query::create()
    ->select('*')
    ->from('TourismUnit tu')
    ->where('FALSE');
if ($keywords) {
    $keywords_array = $this->parse_keywords($keywords);
    for ($i = 0; $i < sizeof($keywords_array); $i++)
        $q->orWhere("MATCH (name, description) AGAINST ('?*' IN BOOLEAN MODE)", $keywords_array[$i]);
}

does not find any results.
And if they use the string concatenation seems to work.

 $q->orWhere("MATCH (name, description) AGAINST ('".$keywords_array[$i]."*' IN BOOLEAN MODE)");

I use Doctrine 1.2.2.

Does anyone know why not replace the parameters before executing the sql expression?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌吟 2024-10-10 19:05:17

在上述准备好的语句中,占位符不喜欢引号 如学说手册中所示。

所以你可以简单地写:

$q->orWhere("MATCH (name, description) AGAINST (? IN BOOLEAN MODE)", $keywords_array[$i].'*');

In prepared statements as above, the placeholder doesn't like quotes as shown in the doctrine manual.

So you could simply write:

$q->orWhere("MATCH (name, description) AGAINST (? IN BOOLEAN MODE)", $keywords_array[$i].'*');
失与倦" 2024-10-10 19:05:17

使用单引号导致问题,
将其转换为使用 concat("'", ?, "*'")

the use of single quote causing the problem,
convert it to use concat("'", ?, "*'")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文