검색 필드가 있고 그 단일 텍스트 상자를 사용하여 사용자가 이름으로 갤러리와 이미지를 모두 찾을 수있게하려고합니다. 문제는 구문에 문제가없고 오류가 발생하지 않아도 내 쿼리에서 결과를 얻지 못하는 것입니다.좋은 SQL 검색은 어떻게합니까?
다음과 같은 시나리오가 있습니다. 내 그룹 이름이 "Liten gruppe!"이고 검색 문자열이 "liten"입니다. 대/소문자를 구분하지 않는 검색의 경우 검색 문자열과 결과 문자열이 모두 소문자로 전환됩니다.
구문에서 뭔가가 예상치 못한 일을해야합니다. OK, 바보 같은 실수 : 어떤 도움
편집에 대한
SELECT `id`
FROM gallery_groups
WHERE `name` LIKE LOWER('%$searchstring%') OR
`date_created` LIKE LOWER('%$searchstring%');
감사합니다. 그러나 보정은 여전히 결과를 얻을 수 없습니다 :
SELECT `id`
FROM gallery_groups
WHERE LOWER(`name`) LIKE '%$searchstring%' OR
LOWER(`date_created`) LIKE '%$searchstring%';
편집 : 재미! 결과 쿼리를 PhpMyAdmin에 직접 복사하면 결과가 일치합니다. 그러나 PHP에서 호출 할 때 어떤 행도 발생하지 않습니다. 어떻게 그렇게 될수 있니?
편집 : 확인 결과, 실제로 결과가 1 개 반환됩니다. 어떤 결과가 (fetch_object을 실행하는 것보다 다른이있는 경우
결과의 모든 필드가 null의 경우object(mysqli_result)[3]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null
이 어떻게 가능하게 알 수 있습니다) : 나는 결과의 덤프 출력에 속지했다?
WHERE `name` COLLATE UTF8_GENERAL_CI LIKE '%$searchstring%' OR
`date_created` COLLATE UTF8_GENERAL_CI LIKE '%$searchstring%';
디버깅을위한 AS : 그들이 볼 수있는 데이터베이스에 전달되는 당신이 정말 의도 한 검색 문자열을 사용하는 경우, SQL 쿼리를 인쇄 해 봅니다 당신은 LOWER
없이 MYSQL에서 대소 문자를 구분 검색을 실행할 수 있습니다
검색어에 검색어를 넣으시겠습니까? –
코드가 생성 한 쿼리를 인쇄하여 PHP 외부의 데이터베이스에 대해 직접 실행 해 보았습니까? 그것은 일반적으로 쉬운 실수를 보여줍니다. –
@Sarah Happy : 예, 저도 해 봤습니다. @ 단 그로스맨 : 나는 그것을하지 않았습니다. 내가 그것을 밖으로 시도하자 – Hubro