집 >데이터 베이스 >MySQL 튜토리얼 >PHP에서 정수 배열을 사용하여 여러 MySQL 레코드를 효율적으로 업데이트하는 방법은 무엇입니까?
MySQL 쿼리(PHP)에서 정수 배열을 사용하는 방법
문제:
MySQL 쿼리에서 임의의 콘텐츠 항목 ID 배열을 활용하는 방법이 필요합니다. 각 ID는 배열에 나타나는 순서대로 WHERE 절에 배치됩니다. 이 쿼리는 배열의 각 개별 ID에 대한 업데이트여야 합니다.
해결책:
PHP 내에서 SQL 작업을 위해 준비된 명령문을 사용하는 것이 좋습니다. 준비된 문은 SQL 주입 공격을 방지하고 데이터베이스 문 컴파일을 통해 효율성을 높여 보안을 강화합니다. 고려할 수 있는 두 가지 접근 방식은 다음과 같습니다.
반복 접근 방식:
$ids = array(2, 4, 6, 8); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?"; $stmt = $mysqli->prepare($sql); for ($i = 0; $i < count($ids); $i++) { $stmt->bind_param("i", $ids[$i]); $stmt->execute(); echo "Updated record ID: $id\n"; } $stmt->close();
단일 실행 접근 방식:
$ids = array(2, 4, 6, 8); $params = implode(",", array_fill(0, count($ids), "?")); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)"; $stmt = $mysqli->prepare($sql); $types = str_repeat("i", count($ids)); // "iiii" $args = array_merge(array($types), $ids); // ["iiii", 2, 4, 6, 8] call_user_func_array(array($stmt, 'bind_param'), ref($args)); // $stmt->bind_param("iiii", 2, 4, 6, 8) $stmt->execute(); $stmt->close(); echo "Updated record IDs: " . implode("," $ids) ."\n";
추가해야 하는 추가 필드의 경우 SQL에 더 많은 매개변수 자리 표시자를 추가하면 됩니다. 문.
선택할 접근 방식:
준비된 문의 장점:
위 내용은 PHP에서 정수 배열을 사용하여 여러 MySQL 레코드를 효율적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!