2012-03-07 6 views
0

을 예상대로 작동하지 않습니다.PHP-MySQL의 기능은 내가 PHP의 기능을 가지고

나는 다음과 같이 호출 :

$sql = "SELECT name FROM airfields WHERE id LIKE '" . $_GET['id'] . "'"; 
$result = doSQL($sql,__LINE__); 

그러나, 모든 통화에이 오류가 발생합니다 : 나는 무엇을 놓치고

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in xxx\xxx\xxx\get_contacts.php on line xx 

?

답변

1

편집기의 맞춤법 검사기가 맞습니까? "$ resutl"은 분명히 잘못되었습니다.

+0

와우 ... 어떻게 생각하세요 ... 고맙습니다. 좋아, 다음 질문을 따르십시오 :'$ result'를 제거하고'return mysql_query ($ sql)'을 넣으면 아무 것도하지 않습니다. 오류는 약간 다릅니다. 그것은'매개 변수 1이 리소스, 부울이 주어진 것으로 기대합니다 .'라고 말하며, 왜 그런 일이 발생합니까? – Albert

+0

쿼리가 실패했기 때문에. –

+0

그것은 이해가되지 않습니다. 'return $ result'를 사용하면 작동합니다. 그러나'return query'를 사용하면 그렇지 않습니다. 나는 질의를 바꾸지 않을거야. – Albert

0

코드를 그대로 사용하면 보안 위험성이 매우 높아집니다. get 변수를 SQL 주입 공격으로 적절히 이스케이프해야합니다.

또한, 나는 그런 mysqli로, 더 나은 PHP 데이터베이스 모듈을 사용하는 것이 좋습니다 : http://php.net/manual/en/book.mysqli.php

그것은 사용하기 쉽게하고 많은 안전합니다.

+0

감사합니다. 이것을 명심하십시오! :) – Albert

+0

나는 이것을 할 적당한 길을 빨리 googled했고,이 페이지를 얻었다. 이것으로 충분할까요? http://www.brightcherry.co.uk/scribbles/phpmysql-make-all-post-or-get-variables-safe-for-mysql-insert/ – Albert

+0

이렇게하면 대부분의 SQL 주입으로부터 당신을 보호 할 수 있습니다. 그러나 XSS (Cross Site Scripting) 공격을 막기 위해 html로 다시 출력하기 전에 INSERT를 통해 삽입 된 데이터를 삭제해야합니다. – optimum

0
function db_connect($server,$username,$pass,$database) 
{ 
    $result = new mysqli($server, $username, $pass, $database); 
    if ($result->connect_error) { 
    die('Connect Error (' . $result->connect_errno . ') ' . $result->connect_error); 
    } 

return $result; 
} 
+0

내 질문에 진술을하기 전에 데이터베이스에 연결합니다. – Albert

관련 문제