2014-11-15 3 views
0

에 '+'기호와 함께 할 수있는 뭔가를 내가 같은 코드 뭔가가 있습니다 $_POST["item"]이 쿼리는 찾을 수 없습니다이 "Black + White Jumper"PHP MySQL의 쿼리가 작동하지 않습니다 - 쿼리

같은 것을 포함

$item = $_POST["item"]; 

$sql = "Select * FROM table WHERE item = '$item'"; 

$result = @mysql_query("$sql",$db); 

경우를 심지어 데이터베이스에 항목이 "Black + White Jumper"

인 경우에도 + 기호와 관련이 있습니다.

이 문제를 해결하려면 어떻게해야합니까?

감사

는 ** 위의 내 실제 코드는, 그래서 그런 잠재적 인 SQL 주입 또는 물건에 대한 응답을하지 않아도되지, 그냥 쿼리에서 일하기 위해 '+'문자를 얻는 방법을 궁금해 .

+0

urldecode ($ _ POST [ "item"])' –

+1

사용하기 mysql_real_escape_string()으로 입력을 이스케이프 처리해야합니다. MySQL은 쓸모가 없으므로 대신 mysqli를 사용하십시오. –

+0

당신은 아마 그 게시물 – MZaragoza

답변

1

외부 입력을 항상 mysql_real_escape_string으로 감싸서 오류 및 SQL 삽입을 방지하십시오.

$sql = "Select * FROM table WHERE item = '".mysql_real_escape_string($_POST['item'])."'"; 
$result = mysql_query("$sql",$db); 

또한 @를 사용하여 오류를 표시하는 것은 좋은 생각이 아닙니다. 적절한 오류 처리를 사용하십시오. 둘째, mysql-extention은 PHP 5.5.0부터 사용되지 않으며, mysqli 나 pdo 사용을 고려해야한다.

+1

동의합니다, mysql_real_escape_string이 작업을 수행합니다. 및 bind_param() –

+0

이 솔루션은 더 이상 사용되지 않습니다 (따라서 downvote). 준비된 진술을 참조하십시오. – Strawberry

0

필자는 여기서 더 이상 사용되지 않는 MySQL 함수와 문자열에 대한 온 전성 검사의 결여를 전달할 것이며 여기에는 질문의 대상이 아닙니다.

item 필드에 "Black + White Jumper"와 같은 특정 문자열을 찾으려면 쿼리가 제대로 작동해야합니다.

결과로 "검은 색 점퍼"+ "화이트 점퍼"를 찾으려면 쿼리는 다음과 같아야합니다. $ sql = "FROM table WHERE item = '검은 색 점퍼'OR item = 'White Jumper' ";

+0

항목이 동시에 두 개의 개별 문자열을 포함 할 수 없기 때문에 이것은 작동하지 않습니다. Black Jumper 또는 White Jumper를 검색하려면 'WHERE item = "Black Jumper"또는 항목 = "White Jumper"를 사용하십시오. –

+0

수정 됨 - Random Hunter –

관련 문제