我有一个OR
无效的代码
try {
$keyword = trim($_GET["keyword"]);
if ($keyword <> "" ) {
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name OR last_name LIKE :keyword) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword", $keyword."%");
它仅从last_name
进行搜索,而不是从first_name
进行搜索。
我需要搜索 last_name 和 first_name 。
答案 0 :(得分:6)
正确的代码是:
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword1 OR last_name LIKE :keyword2) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword1", $keyword."%");
$stmt->bindValue(":keyword2", $keyword."%");
注意您不能具有多个一个占位符具有相同名称。这就是我使用keyword1
和keyword2
并将相同值绑定到它们的原因。
答案 1 :(得分:1)
试试这个
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
答案 2 :(得分:1)
这一次你付出了额外的努力并尝试了更多,是的,这比MYSQL search result更明确。
try {
$keyword = trim($_GET["keyword"]);
if ($keyword <> "" ) {
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword", $keyword."%");
希望这会帮助你。
是的,尝试编辑相同的问题,避免以不同的方式提出相同的问题。