2013-08-16 2 views
0

표 결과를 필터링하고 lon 및 lat 좌표로 정렬하려고하지만 사용중인 코드에 오류가 발생했습니다. 다음은 코드입니다. 그러나 주문에 올바른 계산 방법을 사용하고 있는지 확실하지 않습니다. 사람이 도와주세요 수 :lon/lat 좌표로 PHP/SQL 결과 정렬

$keyword = //From Form Input 
$lon = //From Form Input 
$lat = //From Form Input 
$filter = //From Form Input 

$radius = 6371; 

//$get_result_sql = "SELECT * FROM members WHERE type = '$filter' AND name LIKE '%$keyword%'"; 
$get_result_sql = "SELECT * FROM members WHERE type = '$filter' AND name LIKE '%$keyword%' ORDER BY acos(sin($lat) * sin(lat) + cos($lat) * cos(lat) * cos(lon - ($lon))) * $radius DESC"; 
$get_result_res = mysqli_query($con, $get_result_sql); 
if(mysqli_affected_rows($con)!=0){ //and if atleast one record is found 
    while($result = mysqli_fetch_assoc($get_result_res)){//This line has the error 
+1

우선 입력 된 값을 쿼리의 모든 부분에서 직접 연결하지 마십시오. SQL Injection을 빠르게 검색하십시오. 명명 된/위치 지정 매개 변수를 대신 사용하십시오. – samuelgrigolato

+0

둘째, "오류"에 대한 도움을 요청하는 경우 "오류 메시지"를 제공하는 것을 잊지 마십시오. 재미있게도, 때로는 문제를 해결하는 방법에 대한 단서가 있습니다. –

+0

@samuelgrigolato 나는 그것을 보았다. 그러나 나는 아직도 당신이 의미하는 것을 얻지 못한다. 대신 어떤 코드를 사용해야합니까? – user2516546

답변

0

오류 메시지가 명확하게 mysqli_fetch_assoc($get_result_res)를 호출하는 whan이 $get_result_res하지 유효한 RESULT_SET 입니다 상태. 내 생각 엔 mysqli_query이 FALSE를 반환했습니다. 아마도 SQL 문이 잘못되어 있기 때문일 수 있습니다. 다큐먼트에서

: 실패

mysqli_query

반환 FALSE. SELECT, SHOW, DESCRIBE 또는 EXPLAIN 질의에 성공하면 mysqli_query()는 mysqli_result 객체를 반환 할 것이다. 다른 성공적인 쿼리 mysqli_query()는 TRUE를 반환합니다.


당신의 다음 단계는 지금 ​​쿼리가 문제를 발견하기 위해서입니다 어떻게 든 인쇄 할 수 있어야합니다. BTW, mysqli probably allow you to obtain some meaningful error message 실패한 경우 ...

+0

위에서 말한 오류가 발생하여 값이 반환되지 않습니다. – user2516546

+0

계산에 오류가 있는지 묻는 이유는 무엇입니까? 이 쿼리는 ORDER 부분 없이도 잘 작동합니다. – user2516546

+0

@ user2516546 알겠습니다. 그렇기 때문에 최소한 print ($ get_result_sql)해야하고 mysqli :: $ error를 읽어야한다고 말한 것입니다. 누락 된 따옴표 또는 초기화되지 않은 변수와 같은 매우 사소한 것일 수도 있습니다 ... –