복붙노트

LIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까?

PHP

LIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까?

여기 그것에 대한 나의 시도가있다.

$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');

$query->execute(array('value'));

while ($results = $query->fetch()) 
{
    echo $results['column'];
}

해결법

  1. ==============================

    1.나는 게시 한 직후 그것을 알아 냈다.

    나는 게시 한 직후 그것을 알아 냈다.

    $query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
    $query->execute(array('value%'));
    
    while ($results = $query->fetch())
    {
        echo $results['column'];
    }
    
  2. ==============================

    2.'%', : something, '%') (즉, 명시 적으로 사용자 입력이 아닌 명시 적으로 이스케이프 처리되지 않은 % 기호를 사용하여) 명명 된 매개 변수로 다음을 수행 할 수도 있습니다. 어떤 것.

    '%', : something, '%') (즉, 명시 적으로 사용자 입력이 아닌 명시 적으로 이스케이프 처리되지 않은 % 기호를 사용하여) 명명 된 매개 변수로 다음을 수행 할 수도 있습니다. 어떤 것.

    편집 : 내가 찾은 다른 구문은 연결 연산자를 사용하는 것입니다 : ||, 그래서 간단하게 될거야 : 여기서 '%'와 같은 열 || : 뭔가 || '%'등

    @bobince는 다음과 같이 언급합니다.

    그래서 그것은 like와 parameterization을 결합 할 때주의해야 할 다른 것입니다.

  3. ==============================

    3.

    $query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
    $query->bindValue(1, "%$value%", PDO::PARAM_STR);
    $query->execute();
    
    if (!$query->rowCount() == 0) 
    {
        while ($results = $query->fetch()) 
        {
            echo $results['column'] . "<br />\n";
        }       
    } 
    else 
    {
        echo 'Nothing found';
    }
    
  4. ==============================

    4.이것도 시도해 볼 수 있습니다. 나는 비슷한 문제에 직면했지만 연구 결과가 나왔다.

    이것도 시도해 볼 수 있습니다. 나는 비슷한 문제에 직면했지만 연구 결과가 나왔다.

    $query = $pdo_connection->prepare('SELECT * FROM table WHERE column LIKE :search');
    
    $stmt= $pdo_connection->prepare($query);
    
    $stmt->execute(array(':search' => '%'.$search_term.'%'));
    
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    print_r($result);
    
  5. ==============================

    5.작동 방식 :

    작동 방식 :

    search `table` where `column` like concat('%', :column, '%')
    
  6. ==============================

    6.PDO가 "%"를 이스케이프합니다 (SQL 삽입으로 이어질 수 있음) : 이전 코드를 사용하면 부분 문자열과 일치 할 때 원하는 결과를 얻을 수 있지만 방문자가 "%"문자를 입력하면 결과를 얻을 수 있습니다. 데이터베이스에 저장된 모든 것을 갖습니다 (SQL 인젝션을 유도 할 수 있습니다)

    PDO가 "%"를 이스케이프합니다 (SQL 삽입으로 이어질 수 있음) : 이전 코드를 사용하면 부분 문자열과 일치 할 때 원하는 결과를 얻을 수 있지만 방문자가 "%"문자를 입력하면 결과를 얻을 수 있습니다. 데이터베이스에 저장된 모든 것을 갖습니다 (SQL 인젝션을 유도 할 수 있습니다)

    나는 PDO가 원하지 않는 / 논란의 여지가없는 검색 결과를 이끌어내는 "%"이스케이프와 같은 결과로 많은 변형을 시도했습니다.

    누군가 공유하는 단어를 발견하면 공유 할 가치가 있다고 생각했습니다. 공유 해주세요.

  7. from https://stackoverflow.com/questions/583336/how-do-i-create-a-pdo-parameterized-query-with-a-like-statement by cc-by-sa and MIT license