如何使用Mysql PDO查询的通用参数

时间:2013-07-24 12:52:02

标签: php mysql pdo

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

<?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);

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

PDO::prepare()的文件说:

  

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