그래서이 웹 사이트에는 mysql 데이터베이스의 테이블을 검색하는 검색 기능이 있습니다. 현재 데이터베이스에는 1108 개의 행이 있습니다. 아티스트 및 앨범과 같은 음악 정보가 포함되어 있습니다. 모든 캐릭터가 아티스트 이름이나 앨범 이름에 포함될 수 있기 때문에 필자는 데이터베이스에 추가되기 전에 각 변수를 urlencoded했습니다. 아래를 참조PHP를 통해 mysql 데이터베이스를 검색 할 때 문제가 발생했습니다
$artist = urlencode($_POST['artist']);
$album = urlencode($_POST['album']);
그래서 지금은 데이터베이스에 새 항목을 추가하고 urlencoded를 할 필요가 문자를 포함 척 할 수 있습니다. 데이터베이스가 잘 보여줍니다.
이제 검색하겠습니다.
외국 문자가 사용되었습니다. 당신은 여기에서 볼 수 있습니다 : http://albumarrrt.net/details.php?artist=Ai%20Otsuka 각각에 대한 앨범 링크를 클릭하면 작동합니다.
하지만 이제 몇 가지 문제가 발생합니다.
1 - '&'을 검색하면 검색 결과 % 26이 (가) 아무것도 표시되지 않습니다. 검색 주소창에 % 26을 표시하지만 아무 것도 읽지 않습니다. 여기 는이 읽고있는 방법은 다음과 같습니다
가 데이터베이스에서 읽을하기 시작하기 전에 $의 검색을 수행 할 수있는 유일한 일이$search = $_GET['search'];
if($search == '') {
echo "Please enter a search term :(";
}
. -
이 단일 또는 이중 따옴표를 검색 할 경우, 일부 이상한 물건의 예를 수행합니다에 대한
검색 "과 일치하는 항목에 대한 찾을 수 없습니다 얻을"% 5C % 5C % 26quot % 3B "검색을 에 대한 ' 와 일치하는 항목은이 작업을 수행하는 이유 데이터베이스 만 인용 아무것도에 대한 코드가 포함되어 있기 때문에 내가 이해하지 못하는 "% 5C % 5C % 26 % 23,039퍼센트의 3B"
을 찾을 수 없습니다 얻을 else.
그건 내 수색에서 잘못 발견 한 유일한 두 가지입니다. 어쩌면 나는 너무 오랫동안 그것을보고 있었지만 그것을 이해할 수는 없었지만, 왜 그것이 '&'을 아무것도 읽지 못하는지에 대해 혼란 스럽습니다.
내 마지막 질문. 현재 검색 방법은 각 단어를 분리하고 주위에 %를 추가 한 다음 LIKE 문을 사용하여 일치하는 단어를 찾습니다. 예 :
검색 :
SELECT * FROM TABLE WHERE (album LIKE '%A%' AND album LIKE '%bunch%' AND album LIKE '%of%' AND album LIKE '%Stuff%' AND album LIKE '%%28word%29%') OR (artist LIKE '%A%' AND artist LIKE '%bunch%' AND artist LIKE '%of%' AND artist LIKE '%Stuff%' AND artist LIKE '%%28word%29%')
은 분명히이 서버에 부담을 많이두고있다, 그리고 나는 그런에 대한 LIKE 문을 사용하여 알고 : 같은 물건 (단어)의 무리 MySQL의 쿼리는 것 대용량 데이터베이스 검색은 좋지 않으므로 FULL TEXT 또는 다른 방법을 검색하는 대체 방법은 무엇입니까?
압도적 인 질문에 사과드립니다.하지만 그들은 모두 서로 손을 맞잡고 있습니다.
편집 : 내 데이터베이스를 위로 고정,하지만 여전히 몇 가지 질문을했습니다 확인. 누군가 utf8에서 utf로 내 텍스트를 변환하겠다고 제안했는데 어떻게해야합니까?
& 기호가 계속 표시됩니다. 예 : Google에서 &을 검색하면 작동하지만 내 사이트에서는 &을 검색 할 때 검색 결과에 대한 POST 결과가 아무 것도 표시되지 않습니다.
$ _POST 매개 변수를 가져 와서 데이터베이스 쿼리에 적용 할 때 응용 프로그램이 SQL 삽입에 대해 익숙합니다. –