준비된 문은 원시 데이터를 쿼리에 전송하므로 SQL 주입이 불가능합니다. real_escape_String
또는 기타 형식 지정 기능은 사용자를 대신하여 탈출 할 필요가 없습니다.
예 : 데이터가 $ _POST [같은 쿼리가 분사의 형태를 포함하므로 경우에도 원료로 전송되고 있기 때문에 기본적으로 쿼리에 직접 내 $ _POST 데이터를 결합하고
$db = new mysqli ("host","user","password","database");
$statement = $db->prepare("SELECT test FROM test WHERE Username=?");
$statement->bind_param('s',$_POST['Username']);
$statement->execute();
$statement->bind_result($resultCol);
$statement->fetch();
$statement->close();
'사용자 이름']; 쿼리가 정상적으로 실행됩니다. 더 읽기의로 절차 및 OOP 스타일의 측면에서
, 그것은 아래로 취향에, 난 personlly 다른 옵션을 통해 OOP 스타일을 선호한다.
$ID= 5;
$db = new mysqli ("host","user","password","database");
$statement = $db->prepare("SELECT test FROM test WHERE ID=?");
$statement->bind_param('i',$ID);
$statement->execute();
$statement->bind_result($resultCol);
$statement->fetch();
$statement->close();
또는 직접 문 내에서 정확한 값으로 작업 할 수 있습니다 :
번호로 작업
$db = new mysqli ("host","user","password","database");
$statement = $db->prepare("SELECT test FROM test WHERE ID='5'");
$statement->execute();
$statement->bind_result($resultCol);
$statement->fetch();
$statement->close();
내 쿼리 결과가'$ stmt' 또는'$ result'에 있습니까? –
방금이 발언을 게시했습니다. $ result 변수는 스크립트 실행 후 쿼리의 리셋을 포함합니다. – zavg
'var_dump ($ result);를 시도하면 NULL이됩니다. 왜 이런거야? –