我试图进行搜索查询,我的查询语句如下:
<?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);
答案 0 :(得分:4)
http://paul-m-jones.com/archives/243 关于内存处理稳定性的事情..
我写这个作为答案,因为我不能发表评论。
答案 1 :(得分:1)
PDO::prepare()
的文件说:
您不能在预准备语句中两次使用同名的命名参数标记。