[SQL] PHP는 mysqli 준비된 문장 LIKE
SQLPHP는 mysqli 준비된 문장 LIKE
어떻게 mysqli와 난 등으로 쿼리를 만들고 모든 결과를 얻을 수 있습니까?
이것은 내 코드이지만 일을 dosn't :
$param = "%{$_POST['user']}%";
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?");
$stmt->bind_param("s", $param);
$stmt->execute();
$stmt->bind_result($id,$username);
$stmt->fetch();
이 코드는 작동하지 않습니다. 나는 그것을 많이 검색 한. 또한 그것은 1 개 이상의 행을 반환 할 수 있습니다. 더 1 행보다 반환하는 경우에도 어떻게 나는 모든 결과를 얻을 수 있습니까?
해결법
-
==============================
1.여기에 제대로 결과를 가져 오는 방법
여기에 제대로 결과를 가져 오는 방법
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($id,$username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}"; }
또는 당신은 또한 할 수 있습니다 :
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_array(MYSQLI_NUM)) { foreach ($row as $r) { print "$r "; } print "\n"; }
난 당신이 내가 먼저 갔어요해야하는 위치이다, 여기와 여기에 수동에서 직접 대답을 얻었다 실현되기를 바랍니다.
-
==============================
2.의견에서 LIKE 와일드 카드 문자 (_and %)이 Paramaterised 쿼리에 기본적으로 탈출하지 않는 등 예기치 않은 결과가 발생할 수 있음을 알 수있다.
의견에서 LIKE 와일드 카드 문자 (_and %)이 Paramaterised 쿼리에 기본적으로 탈출하지 않는 등 예기치 않은 결과가 발생할 수 있음을 알 수있다.
"LIKE"문을 사용하는 경우 따라서 이러한 문자가 이스케이프하기 위해이 '부정적 예측'정규식을 사용합니다 :
$param = preg_replace('/(?<!\\\)([%_])/', '\\\$1',$param);
또한 따라서 MySQL의 CONCAT 기능을 사용 할 수 있습니다 위의 주어진 대답하는 대신 :
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE CONCAT('%',?,'%') "); $stmt->bind_param("s", $param); $stmt->execute();
어떤 편집을 $ PARAM 값을 필요로하지만, 약간 더 긴 쿼리 메이크업을하지 않는 것을 의미한다.
from https://stackoverflow.com/questions/18527659/php-mysqli-prepared-statement-like by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 것 사람이 사용 WHERE 1 = 1 AND <조건>은 SQL 절의? (0) | 2020.03.11 |
---|---|
[SQL] 가장 좋은 방법은 임의의 행을 선택하는 PostgreSQL을 (0) | 2020.03.11 |
[SQL] 쿼리 문자열에서 숫자 만 얻을 수 있습니다 (0) | 2020.03.11 |
[SQL] 열 이름 피벗 해제 (0) | 2020.03.11 |
[SQL] LINQ 도구에 SQL이 [마감] (0) | 2020.03.11 |