LIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까?
PHPLIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까?
여기 그것에 대한 나의 시도가있다.
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
해결법
-
==============================
1.나는 게시 한 직후 그것을 알아 냈다.
나는 게시 한 직후 그것을 알아 냈다.
$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?'); $query->execute(array('value%')); while ($results = $query->fetch()) { echo $results['column']; }
-
==============================
2.'%', : something, '%') (즉, 명시 적으로 사용자 입력이 아닌 명시 적으로 이스케이프 처리되지 않은 % 기호를 사용하여) 명명 된 매개 변수로 다음을 수행 할 수도 있습니다. 어떤 것.
'%', : something, '%') (즉, 명시 적으로 사용자 입력이 아닌 명시 적으로 이스케이프 처리되지 않은 % 기호를 사용하여) 명명 된 매개 변수로 다음을 수행 할 수도 있습니다. 어떤 것.
편집 : 내가 찾은 다른 구문은 연결 연산자를 사용하는 것입니다 : ||, 그래서 간단하게 될거야 : 여기서 '%'와 같은 열 || : 뭔가 || '%'등
@bobince는 다음과 같이 언급합니다.
그래서 그것은 like와 parameterization을 결합 할 때주의해야 할 다른 것입니다.
-
==============================
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.이것도 시도해 볼 수 있습니다. 나는 비슷한 문제에 직면했지만 연구 결과가 나왔다.
이것도 시도해 볼 수 있습니다. 나는 비슷한 문제에 직면했지만 연구 결과가 나왔다.
$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.작동 방식 :
작동 방식 :
search `table` where `column` like concat('%', :column, '%')
-
==============================
6.PDO가 "%"를 이스케이프합니다 (SQL 삽입으로 이어질 수 있음) : 이전 코드를 사용하면 부분 문자열과 일치 할 때 원하는 결과를 얻을 수 있지만 방문자가 "%"문자를 입력하면 결과를 얻을 수 있습니다. 데이터베이스에 저장된 모든 것을 갖습니다 (SQL 인젝션을 유도 할 수 있습니다)
PDO가 "%"를 이스케이프합니다 (SQL 삽입으로 이어질 수 있음) : 이전 코드를 사용하면 부분 문자열과 일치 할 때 원하는 결과를 얻을 수 있지만 방문자가 "%"문자를 입력하면 결과를 얻을 수 있습니다. 데이터베이스에 저장된 모든 것을 갖습니다 (SQL 인젝션을 유도 할 수 있습니다)
나는 PDO가 원하지 않는 / 논란의 여지가없는 검색 결과를 이끌어내는 "%"이스케이프와 같은 결과로 많은 변형을 시도했습니다.
누군가 공유하는 단어를 발견하면 공유 할 가치가 있다고 생각했습니다. 공유 해주세요.
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
'PHP' 카테고리의 다른 글
UTF-8 문자열을 사용하여 PHP에서 파일 시스템 함수를 사용하려면 어떻게해야합니까? (0) | 2018.09.10 |
---|---|
PHP에서 함수가 반환 한 액세스 배열 (0) | 2018.09.10 |
반복 날짜를 기억하는 방법 일광 절약 시간제 (0) | 2018.09.10 |
자바 스크립트 함수에 PHP 배열 전달 [duplicate] (0) | 2018.09.10 |
텍스트의 URL을 HTML 링크로 바꾸기 (0) | 2018.09.10 |