MYSQL或不工作

时间:2017-07-01 09:19:50

标签: php mysql

我有一个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

3 个答案:

答案 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."%");

注意不能具有多个一个占位符具有相同名称。这就是我使用keyword1keyword2并将相同值绑定到它们的原因。

答案 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."%");

希望这会帮助你。

是的,尝试编辑相同的问题,避免以不同的方式提出相同的问题。

我也回答了这个问题https://stackoverflow.com/a/44859438/7678788