2011-11-23 3 views
0

좋아, 내가 IN 문을 추가하면 오히려 긴 쿼리가 실패합니다. 다음의 질의는 MySQL 콘솔에서 직접 작동하지만 PHP로 완료되면 아무 것도 반환하지 않습니다.PHP MySQL이 IN을 지원하지 않습니까?

$db = mysql_connect('localhost', 'something', 'somepassword'); 

$query = "SELECT * 
FROM alt_table f 
INNER JOIN alt_fac_table_c cl ON (f.id = cl.alt_table2_ida) 
INNER JOIN alt_table c ON (cl.alt_table_idb = c.id) 
LEFT OUTER JOIN alt_table_contacts_c con ON (f.id = con.alt_table_ida) 
LEFT OUTER JOIN contacts cc ON (con.alt_table_idb = cc.id) 
WHERE c.name = 'myname' 
AND f.state IN ('AL','FL') ORDER BY fname;"; 

$result = mysql_query($query); 

문제는 쿼리 자체가 아니라 데이터베이스와 연결하는 것과 관련이 없습니다. 분명히 몇 가지 이름이 바뀌었지만 쿼리가 동일합니다. PHP에서는 아무것도 반환하지 않고 (오류도없고 아무 것도 없음) SSH/Console에서 필요한 모든 행을 반환합니다.

"AND f.state IN ('AL', 'FL') ORDER BY fname;"; "을 제거하면 쿼리가 작동하지만 모든 상태가 표시됩니다. IN 문에 문제가 있습니까?

업데이트 수정 게시물 데이터에 문제가 생겼습니다. 'AL', FL '에 대한 작은 따옴표를 게시했습니다. 게시물에 이상하게 인코딩되어있었습니다. 보안 기능의 어떤 종류. 나는 포스트에서 인용을 가져다가 서버 측 PHP를 대신 추가하고 그것을 작동합니다. 당신은 데이터베이스를 선택 소홀히 한

+5

MySQL은 MySQL과 상호 작용할 때 사용하는 프로그래밍 언어와 상관없이 MySQL입니다. – BoltClock

+0

셸에서 데이터베이스에 대해 직접 쿼리 할 때이 정확한 명령문이 작동하므로 무례하지만 실망하지 않으십시오. – Tyler

+0

코드를 게시하지 않은 경우 게시자가 도움을 줄 수 있습니까? 또한, mysql_error()로 에러를 체크하라. 나는 또한 실제로 결과 세트로 무언가를하고,'echo $ result; '또는 이와 유사한 행을 보여주는 것에 의존하지 않고 있다고 가정한다. 'while ($ row = mysql_fetch_array ($ result)) {print_r ($ row); }' –

답변

0

게시물 데이터에 문제가 발생했습니다. 나는 'AL', FL '에 대한 작은 따옴표를 게시하고있었습니다. 그것은 분명히 게시물에 이상하게 인코딩했다. 나는 일종의 보안 기능을 맡는다. 나는 포스트에서 따옴표를 가져 와서 서버 측의 PHp를 대신 추가하여 작동합니다.

6

...

mysql_select_db('database_name', $db); 

mysql_connect() 함수를 호출 한 직후에 실행해야합니다. 당신이 그것을 연결하기 위해 다음과 같은 사용할 수 있도록

http://uk.php.net/mysql_select_db

그것은 성공에 참/거짓을 제공 할 것입니다.

if(! mysql_select_db('database_name', $db)) { 
    die('failed to select database'); 
} 

위 이외에, 당신은

$result = mysql_query($query); 

보다 다음과 같은 일에 다음 행을 수정할 수 있습니다. 이 단지를 제거하는 시도하고 그것이 작동하는지 확인 http://php.net/manual/en/function.mysql-query.php

The query string should not end with a semicolon.

에서 당신이 반환 된 오류 및 귀하의 경우에게 No database selected 오류

$result = mysql_query($query) or die(mysql_error()); 
+1

다른 게시물 (삭제 된 이후)도 좋은 지적입니다. 검색어가있을 필요가 없으므로 세미콜론을 제거하십시오. – Crontab

+0

사실, 거기에있을 필요는 없습니다. 그러나이 경우 쿼리가 끝나면 아무런 해가 없습니다. –

+0

문제 없습니다. 방금 위의 코드 조각에 해당 줄을 제공하지 않았습니다. 내가 IN 문을 사용하여 잘 작동한다고 말하는 내 의견을 참조하십시오. – Tyler

0

표시됩니다.

+0

PHP는';'을 무시합니다 –

관련 문제