2012-03-03 3 views
-2

테이블 이름 스타일. 참조 된 칼럼 : PHP와 5PHP 및 쿼리 문자열을 사용하여 비정상적인 문자가있는 MySQL 행 선택

문제를 코딩 스타일

는 : MySQL을 내 SELECT 쿼리가 0 행을 반환합니다.

저는 식별자 문자열에있는 열 이름을 식별자 (예 : example.com.php?style=paper-pencils)로 사용하고 있습니다. SEO 목적을 위해 나는 이상한 문자를 제거하고 '-'로 공백을 대체했습니다. URL 재 작성을 사용하여 example.com/paper-pencils으로 끝납니다.

데이터베이스 작업 스타일 열에 '&' 또는 ':'과 같은 문자를 사용하는 상속되었습니다. 데이터베이스 쪽에서 스타일 열에는 내 슬러그 버전 인 "종이 연필"에 비해 "Paper & Pencils" 같은 행이 포함됩니다.

내가 시도한 것 : 나는 '종이 연필'로 끝날 수 있도록 URL을 풀어 낸다. (아래 쿼리 예제 참조).

나는 아무 소용

SELECT * ,REPLACE('Style', '&', ' ') AS Style, REPLACE('Style', ':', ' ') AS Style FROM Styles 
WHERE Style = 'paper pencils' 

을 시도했다. 쿼리가 제대로 실행되면 결과가 0으로 돌아옵니다.

다음 단계는 PHP SWITCH 문을 사용하는 것입니다.

case: $_GET['style'] = 'paper-pencils' 

$DBstyle = 'Paper & Pencils'하지만 주변에 다른 방법이 있어야한다 같은 느낌처럼 뭔가. 나는 30 가지 가능성이 있으며 더 나은 것을 선호 할 것입니다.

임의의 어커런스가있는 이러한 비정상적인 문자를 어떻게 설명 할 수 있습니까?

+0

다음 테이블 데이터를 알려주십시오. 누군가 –

+0

내 지식 부족을 용서해주십시오. 전 사이트를 처음 사용합니다. 어떻게 내 테이블 데이터를 줄까요? 당신은 단지 몇 줄 또는 스키마와 같은 것을 의미합니까? 다음은 예입니다. 쿼리 문자열이있는 경우 : example.com/george-m-bruestle "george m bruestle"을 쿼리합니다. 그러나 데이터베이스에있는 것이 실제로 George M. Bruestle (대문자가 아닌 문제)이기 때문에 나는 아무 것도 얻지 못합니다. 쿼리 문자열이 example.com/leonardo-da-vinci 인 경우 실제 데이터가 Leonardo Da Vinci 인 leonardo da vinci를 찾고 있기 때문에 아무런 문제가 없습니다. 당신의 도움을 주셔서 감사합니다. – user1246448

답변

1

아마도이 테이블에 style_slug라는 다른 열을 추가 할 수 있습니다. 이 열에는 URL에서 사용하는 슬러그 드 버전이 포함되어 있으며 쿼리에서 스타일 열을 검색 할 수 있습니다.

+0

필자는 1) 원본 테이블의 열 이름 (모든 정보가있는 곳)을 참조하는 대체 테이블을 만들었습니다. 및 2) 청소 된 슬러그. 그러나 나는 여전히 다른 데이터 집합과 동일한 문제를 겪고있다. 문제는 "STYLES = $ styleNameFromQuerystring"이라는 간단한 "SELECT * from tabl"이 Tom J. Johnson이나 Le-Miserables와 같은 이름의 데이터베이스에서 풀링을하기 때문에 충분하지 않다는 것입니다. 또는 '-'는 표준이 아니지만 확실히 중요합니다. – user1246448

1

Gohn이 말했던 것처럼,이 사이트에서 사용되는 접근 방식을 사용하면 URL에 고유 한 식별자와 슬러그가 모두 존재합니다.

example.com/2356356/paper-pencils 

SEO를 망칠 수 있으며 삶을 편하게 만듭니다.

+0

원본 댓글에이 글을 올려야했지만 고유 식별자 아이디어가 처음 시도되었습니다.내가 가진 JQUERY .ajax 함수에 이상한 문제가 발생했습니다. 어떤 이유로 인해 쿼리 URL에서 전달 된 고유 매개 변수로 .ajax URL (예 : load_info.php)이 표시되었습니다. 그래서 내 .ajax URL이 'load_info.php'... example.com/1/paper-pencils의 내 쿼리는 의도 한 "1"과 "paper-pencils"대신 load_info.php와 paper-pencils를 각각 울리고있었습니다. ". 나는 단지 내가 뒤로 거꾸로 가고있는 것처럼 느꼈지만 위대한 생각. – user1246448

+0

글쎄, 당신은 아약스 –

+0

에서 그 명백한 오류를 바로 잡아야합니다. 그것은 "^ ([\ d \ w -] +) $ index.php? styleName = $ 1 [L]"에서 "^ ([\ d \ w -] +) /()로 갈 때까지 함수가 완벽하게 작동하기 때문에 이상합니다. [\ d \ w -] +) $ index.php? styleName = $ 1 & StyleID = $ 2 [L] ". 당신은 저에게 (물론 MY의) 아약스 문제에 대한 새로운 주제를 시작하도록 영감을주었습니다. 도와 주셔서 감사합니다. – user1246448