2012-03-15 3 views
2

검색 쿼리 $ s_query에 문제가 있습니다. 내 MySQL 데이터베이스에 콜 럼에 해당하는 유형 (날짜, 제목, 또는 위치)를 검색 할 수 있습니다 사용자는php/mysql 검색 쿼리 구문

$search_type =mysql_real_escape_string($_POST['type']); 
$search_query =mysql_real_escape_string($_POST['search_query']); 

if ($search_query == "") { 
    echo "<p>Please enter a search...</p>"; 
    exit;} 

$s_query = "SELECT * FROM `posts` WHERE `$search_type` == `$search_query` "; 

$s_result1=mysql_query($s_query); 

if (!$s_result1) { 
    die('Invalid query: ' . mysql_error()); 
    //header ("Location: /UC_page.html"); 
} 

$s_row = mysql_fetch_array($s_result1); 
$s_num1=mysql_numrows($s_result1); 
mysql_close(); 

mysql_error를 말한다 : 당신은 당신의 SQL 구문에 오류가 있습니다; 올바른 구문을 찾으려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. '== 1956'

나는 모든 연산자를 사용할 수 있었고 모든 구문을 찾을 수는 있었지만 메신저가 멈추었습니다. 한 지점에서 일할 날짜를 얻었지만 문자열은 가져 오지 않았습니다. 사전에 감사합니다.

+0

'=='에 대한 필요가 없으므로 하나만'='해야합니다. –

답변

4

실제로 두 가지 문제가 있습니다. 첫째, 가치가있는`을 (를) 감싸고 있습니다. 이것은 유효하지 않습니다. 대신 " 또는 '을 사용하십시오.

또한 ==은 올바른 구문이 아니므로 단일 =을 사용해야합니다. 비록 당신이하고있는 것을보고 있지만 대소 문자를 구별하지 않는 검색을 위해서 LIKE을 대신 사용하고 싶을 것입니다.

그래서이 쿼리가 작동합니다 :

SELECT * FROM `posts` WHERE `$search_type` = '$search_query' 

또는 LIKE로를 :

또한
$s_query = "SELECT * FROM `posts` WHERE `" . $search_type . "` = " . $search_query; 

것은 당신을 확인하십시오 : 이것은 당신이 MySQL을 기대하고 무엇 쿼리 이해하는 데 도움이 될

SELECT * FROM `posts` WHERE `$search_type` LIKE '$search_query' 
+0

감사합니다 !!! 완벽하게 작동합니다! – user1107703

3

삽입 값 주위에`(탭 단추 위에) 놓습니다. 그것들은 단지 들판으로 간다. 값에 슬래시 버튼 위의 '사용'을 누르십시오.

+0

답변 해 주셔서 감사 드리며 mysql_error가 있습니다 : SQL 구문에 오류가 있습니다. 올바른 문법이 '=='Lorem Ipsum '근처에서 사용되도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. – user1107703

0

$search_query에 필요한 따옴표를 추가하십시오. 예 : 문자열 인 경우 '으로 둘러 쌉니다.