PHP의 안전한 MySQL 준비 문
PHP에서 SQL 쿼리 작업을 수행할 때 준비된 문을 사용하여 보안의 우선순위를 지정하는 것이 중요합니다. 다음은 URL 매개변수의 입력을 사용하여 열을 검색하는 안전한 준비된 명령문을 생성하는 방법입니다.
MySQL Improved(MySQLi) 활용:
$db = new mysqli("host", "user", "pw", "database"); $stmt = $db->prepare("SELECT * FROM mytable WHERE userid = ? AND category = ? ORDER BY id DESC"); $stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category'])); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; } $stmt->close();
또는 이 도우미 기능을 사용하여 연관 배열 바인딩:
function stmt_bind_assoc (&$stmt, &$out) { $data = mysqli_stmt_result_metadata($stmt); $fields = array(); $out = array(); $fields[0] = $stmt; $count = 1; while ($field = mysqli_fetch_field($data)) { $fields[$count] = &$out[$field->name]; $count++; } call_user_func_array(mysqli_stmt_bind_result, $fields); }
사용하려면 it:
$stmt->store_result(); $resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
성능 향상
준비된 명령문은 쿼리를 다시 구문 분석하고 다시 계획할 필요성을 최소화하여 성능을 향상시킵니다. 그러나 한 페이지에서 몇 번만 사용하면 속도에 미치는 영향이 크지 않을 수 있습니다. 그럼에도 불구하고 SQL 주입 취약점에 대한 보안 강화 및 보호를 위해 여전히 권장되는 방법입니다.
위 내용은 PHP에서 준비된 명령문을 사용하여 MySQL에서 데이터를 안전하게 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!