PDO подготовил операторы Like и OR, использованные вместе - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь сказать, отображаются ли все символы «ИЛИ». Если это удаленно близко к хранителю, тогда покажите (как) Лео, да, я пытался: хранитель здесь весь код. Я прокомментировал то, что вы предложили, потому что это работает на данный момент. (также изменил sql). Мне любопытно, имеет ли значение первый запрос, в котором я пытаюсь получить 'count'. Дай мне знать. Спасибо.

$q = $_GET['q'];
$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets WHERE po = :query OR serialNum = :query OR dop = :query OR purchaseFrom = :query OR custodian = :query");
    $STH->bindParam(':query', $q);
            //$STH->bindParam(':custodian', '%'.$q.'%');
    $STH->execute();

    if ($STH->fetchColumn() > 0) {
        $STH = NULL;
        $STH = $dbh->prepare("SELECT * FROM inv_assets WHERE po = :query OR serialNum = :query OR dop =:query OR purchaseFrom = :query OR custodian = :query");
        $STH->bindParam(':query', $q);
        //$STH->bindParam(':custodian', '%'.$q.'%');
                    $STH->execute();
        showTable($STH,$perms);

Ответы [ 3 ]

2 голосов
/ 27 января 2012

Пример выполнения запросов PDO LIKE.

$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");

$ret = $STH->execute(array(':custodian' => '%'.$query.'%',':query' => $query));

Пример с bindParam:

<?php

$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");

$STH->bindParam(':custodian', '%'.$q.'%');
$STH->bindParam(':query', $q);
$STH->execute();

?>
2 голосов
/ 27 января 2012

LIKE заменяет = не OR

Пример:

SELECT first_name, last_name 
FROM student_details 
WHERE first_name LIKE 'S%' OR last_name LIKE 'A%';

Посмотрите здесь: Ключевые слова для сравнения SQL

0 голосов
/ 10 февраля 2015
<?php

$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");

$custodian = "%".$q."%";
$STH->bindParam(':custodian', $custodian);
$STH->bindParam(':query', $q);
$STH->execute();

?>

это позволит избежать передачи параметра 2 из-за ошибки ссылки и работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...