2012-08-20 3 views
0

GET ID를 사용하여 mysql 데이터베이스에서 정보를 가져 오려고합니다. 다음 코드를 사용하여 ID가 ​​무엇인지 확인합니다.GET ID가 mysql에서 조회하고 정보를 표시합니다.

  $qry = "SELECT name,country FROM databasetable WHERE uid=$id"; 

오류가 발생합니다. 지정된 uid를 가진 항목을 찾을 수 없습니다. 만약 내가 uid를 숫자로만 변경한다면, 그것을 찾을 수 있습니다. 예 :? id = 1000000000은 잘 작동합니까? id = 1kKV0LEfMi. 나 당신이

$qry= "SELECT name,country FROM databasetable WHERE uid='$id'"; 

BTW 쿼리에서 문자열을 허용하도록 $ 아이디 주위에 따옴표를 추가 할 필요가

+0

귀하의 질문에 대답하는 데 도움이되지 않을 수도 있지만 mysql_ * 기능 사용을 중단해야합니다. 그들은 더 이상 사용하지 않을 것입니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) (PHP 5.1 이상 지원) 또는 [mysqli] (http://php.net/manual/en/book)를 사용하십시오. mysqli.php) (PHP 4.1부터 지원). 어떤 것을 사용해야하는지 잘 모르겠 으면 [이 기사를 읽으십시오] (http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/). – Matt

+0

데이터베이스에 보내는 쿼리는 * 정확히 * 무엇입니까? – Matt

+0

또한,'htmlspecialchars'는 SQL 인젝션을 멈추지 않습니다. Matt이 말했듯이 구식이지만 (!) mysql_real_esacape_string을 사용해야한다. – ComFreek

답변

0

시도 지원 (mysql_ * 함수가 아님) 및 SQL 주입 방지를 위해 데이터를 이스케이프하는 방법을 배워야합니다.

1

를 도와주세요 찾을 수 없습니다. 너 왜 $id = htmlspecialchars($_GET['id']);을하고 있니?

이것은 $id = mysql_escape_string($_GET['id']);이어야합니다!

+0

그들 사이의 차이점은 무엇입니까? – andrew

+0

@AppStore RTFM, 친구. – Matt

+0

@Matt TL; DR, dude – andrew

0
'$id' <-- first put the variable in single quotes. good practice. 

둘째, 특수 문자를 사용하지 않는 경우 문제가 될 수 있으므로이를 해결하십시오. HTML 특수 문자를 제거 시도하고 당신은 당신이 또한 정말 새로운 MySQL의 연결을 사용하여 조사 할 필요가 말했다되고 그건이

$qry = "SELECT name,country FROM databasetable WHERE uid='$id'"; 

같은 UID 값 주위에 작은 따옴표를 가지고 쿼리를 변경해야 다시

+0

@ D.Müller ID가 숫자가 아닙니다. –

+0

@ D.Müller 그는 또한 문자열을 사용하여 쿼리하려고한다고 말했습니다 ... –

+0

죄송합니다. 죄송합니다. –

관련 문제