2014-11-14 4 views
-1

이 내 코드입니다 :mysqli 및 매개 변수로 쿼리를 전달 - 결과가 없습니다

$sql = $_POST['sql']; 
.... 
$result = $mysqli->query($sql); 

이 어떤 결과를 반환하지 않습니다. 그래서 $ sql 변수가 반향되었습니다. 결과는 다음과 같습니다.

SELECT o.entity_id, o.increment_id FROM sales_flat_order o JOIN sales_flat_order_payment p ON o.entity_id = p.parent_id JOIN sales_flat_order_address a ON o.entity_id = a.parent_id WHERE a.country_id = \'DE\' ORDER BY o.entity_id DESC LIMIT 10; 

이제이를 $ sql 변수에 직접 할당하면 작동합니다. 무엇이 문제 일 수 있습니까?

감사

+1

를 작동 할 경우''\''그 쿼리에서 가능성이 구문을 생산하고 있습니다 오류. 그 따옴표가 왜 이스케이프됩니까? SQL 오류 메시지를 확인 했습니까? 마법의 따옴표가 있습니까? 왜 처음부터 사용자로부터 임의의 쿼리를 수락합니까? – deceze

답변

0

음, 우선은 거짓 때, 즉 당신에게 무엇이 잘못되었는지에 대한 세부 정보를 줄 것이다 $mysqli->error$result 출력 마지막 오류를 테스트 할 수있다.

둘째, POST 또는 GET 매개 변수에서 오는 쿼리를 실행해서는 안됩니다. 이렇게하면 SQL 주입으로 데이터베이스에서 아무 작업도 수행 할 수 없게됩니다. 그것은 큰 보안 침해입니다.

셋째, 문제는 (따옴표 \'DE\'주의) 아마 POST 인코딩에 그래서 당신이 urldecode 및/또는 stripslashes 당신의 $sql 아마