1

我试图进行搜索查询,我的查询语句如下所示:

<?php
$query= $db->prepare("SELECT
                          p.id, 
                          p.name, 
                          p.surname, 
                          p.phone, 
                          t.title, 
                          j.job, 
                          d.department
                       FROM
                          People p 
                       JOIN
                          Titles t ON p.title_id = t.id
                       JOIN 
                          Departments d ON p.dept_id = d.id
                       JOIN 
                          Jobs j ON p.job_id = j.id
                       WHERE
                          p.name LIKE :v1 OR
                          p.surname LIKE :v2 OR 
                          p.phone LIKE :v3 OR 
                       ORDER BY 
                          d.department, 
                          p.name, 
                          p.surname"
              );

$query->bindValue(":v1", $value, PDO::PARAM_STR);
$query->bindValue(":v2", $value, PDO::PARAM_STR);
$query->bindValue(":v3", $value, PDO::PARAM_STR);
?>

$value来自输入搜索字符串的文本框。查询工作正常。

我想了解的是为什么我必须为一个值使用 3 个参数。为什么我不能输入如下语句:

p.name LIKE :v1 OR
p.surname LIKE :v1 OR 
p.phone LIKE :v1 OR 

然后只绑定一次参数?

$query->bindValue(":v1", $value, PDO::PARAM_STR);
4

2 回答 2

4

http://paul-m-jones.com/archives/243 关于内存处理稳定性的一些事情..

我写了这个作为答案,因为我还不能发表评论。

于 2013-07-24T12:58:34.243 回答
1

的文档PDO::prepare()说:

您不能在准备好的语句中两次使用同名的命名参数标记。

于 2013-07-24T12:59:52.723 回答