>데이터 베이스 >MySQL 튜토리얼 >PHP에서 정수 배열을 사용하여 여러 MySQL 레코드를 효율적으로 업데이트하는 방법은 무엇입니까?

PHP에서 정수 배열을 사용하여 여러 MySQL 레코드를 효율적으로 업데이트하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-09 10:50:061033검색

How to Efficiently Update Multiple MySQL Records Using an Integer Array in PHP?

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에 더 많은 매개변수 자리 표시자를 추가하면 됩니다. 문.

선택할 접근 방식:

  • 반복 접근 방식: 각각에 대해 데이터베이스 호출이 이루어지는 UPDATE 및 INSERT 작업에 적합합니다. 기록합니다.
  • 단일 실행 접근 방식: SELECT 및 DELETE 쿼리 또는 모든 레코드가 유사하게 수정되는 UPDATE 작업에 효율적입니다.

준비된 문의 장점:

  • SQL 주입 공격에 대한 보안이 강화되었습니다.
  • 효율성이 향상되었습니다. 명령문 컴파일 및 데이터 전송 감소로 인해
  • 데이터베이스에 전체 SQL 문자열이 반복적으로 전송되는 것을 방지합니다.

위 내용은 PHP에서 정수 배열을 사용하여 여러 MySQL 레코드를 효율적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.