[PHP] MySQL 데이터의 값 변경하기 UPDATE

2022. 10. 5. 05:37Program/PHP

119_PHP MySQL 데이터의 값 변경하기 UPDATE

[요약]

  • 레코드의 값을 변경하는 명령문 UPDATE 에 대해 알아보자

데이터베이스에 입력한 데이터를 수정하는 일은 매우 자주 발생한다.

게임을 예로 들면 경험치를 충족하여 다음 레벨로 데이터를 변경하거나 회원이 개명하여 회원명을 변경하기 원하는 등의 다양한 상황이 발생하게 된다.


[UPDATE 문 사용 방법]

UPDATE 테이블명 SET 필드명 값 조건

조건문을 사용하지 않으면 테이블의 모든 레코드가 동일하게 변경되기 때문에 UPDATE문을 사용할 때는 조심해야 한다.

 

다음은 myMemberID가 5번인 고객의 휴대전화번호를 0으로 변경하는 예제이다.

[예제: 122-1_update.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "UPDATE myMember SET phone = 0 WHERE myMemberID = 5";
    $result = $dbConnect->query($sql);

    if ($result) {
      echo "변경 성공";
      echo "<br>";
      $sql = "SELECT phone FROM myMember WHERE myMemberID = 5";
      $result = $dbConnect->query($sql);  // 쿼리 송신

      $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
      echo "회원번호 5의 휴대폰번호는 " . $memberInfo['phone'];
    } else {
      echo "변경 실패";
    }
?>

실행결과


UPDATE문을 사용하여 한 번에 여러 필드의 값을 변경할 수 있다.

5번 회원의 휴대전화번호를 원래의 값으로 변경하고, 아이디를 yuna에서 yuna-kim으로 변경해보자.

 

쿼리문은 다음과 같다.

UPDATE myMember SET phone = '010-1234-5678', userId = 'yuna-kim' WHERE myMemberID = 5;

필드에 값을 대입한 후 ','로 구분하여 변경할 필드를 적고 값을 대입한다.

 

다음은 위의 쿼리문을 활용한 예제이다.

[예제: 122-2_updateSetTwo.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "UPDATE myMember SET phone = '010-1234-5678', userId = 'yuna-kim' WHERE myMemberID = 5;";
    $result = $dbConnect->query($sql);

    if ($result) {
      echo "변경 성공";
      echo "<br>";
      $sql = "SELECT userId, phone FROM myMember WHERE myMemberID = 5";
      $result = $dbConnect->query($sql);  // 쿼리 송신

      $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
      echo "회원번호 5의 휴대폰번호는 " . $memberInfo['phone'];
      echo "<br>";
      echo "회원번호 5의 변경되 ID는 " . $memberInfo['userId'];
    } else {
      echo "변경 실패";
    }
?>

실행결과


기존 입력된 값을 기준으로 값을 더하는 방법도 있다.

이것을 테스트하기 위해 모든 회원의 휴대전화번호를 0으로 변경한다.

모든 회원의 값을 변경하므로 조건문인 WHERE문을 사용하지 않는다.

[예제: 122-3_updateAllZero.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "UPDATE myMember SET phone = 0;";
    $result = $dbConnect->query($sql);

    if ($result) {
      echo "변경 성공";
      echo "<br>";
      $sql = "SELECT myMemberID, phone FROM myMember";
      $result = $dbConnect->query($sql);  // 쿼리 송신

      $dataCount = $result->num_rows;

      for ($i = 0; $i < $dataCount; $i++) {
        $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
        echo "회원번호 {$memberInfo['myMemberID']}의 ";
        echo "휴대폰번호는 " . $memberInfo['phone'];
        echo "<br>";
      }
    } else {
      echo "변경 실패";
    }
?>

실행결과

모든 회원의 휴대전화번호를 0으로 만들었따.

다음은 휴대전화번호의 값에 3을 더하는 쿼리문이다.

UPDATE myMember SET phone = phone + 3;

필드를 지정한 후 대입하는 곳에 필드명을 입력하면 기존의 필드에 있는 값을 출력한다.

 

다음은 휴대전화번호 값에 3을 더하는 예제이다.

[예제: 122-4_updateAllPlus.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "UPDATE myMember SET phone = phone + 3;";
    $result = $dbConnect->query($sql);

    if ($result) {
      echo "변경 성공";
      echo "<br>";
      $sql = "SELECT myMemberID, phone FROM myMember";
      $result = $dbConnect->query($sql);  // 쿼리 송신

      $dataCount = $result->num_rows;

      for ($i = 0; $i < $dataCount; $i++) {
        $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
        echo "회원번호 {$memberInfo['myMemberID']}의 <br>";
        echo "휴대폰번호는 " . $memberInfo['phone'];
        echo "<br>";
        echo "<br>";
      }
    } else {
      echo "변경 실패";
    }
?>

실행결과

필드를 지정한 후 대입하는 곳에 필드명을 입력하면 기존의 필드에 있는 값을 출력한다.

그 값에 3을 더한 값이 대입된다.

 

실제로 휴대전화번호가 0이 되거나 3이 되는 일은 없지만, 기존의 필드값을 필드에 대입할 수 있다는 것을 알아보았다.

다시 모든 회원의 휴대전화번호를 '010-1234-5678'로 변경하도록 하자.

사용하는 쿼리문은 다음과 같다.

UPDATE myMember SET phone = '010-1234-5678';

[예제: 122-5_updateAll.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "UPDATE myMember SET phone = '010-1234-5678';";
    $result = $dbConnect->query($sql);

    if ($result) {
      echo "변경 성공";
      echo "<br>";
      $sql = "SELECT myMemberID, phone FROM myMember";
      $result = $dbConnect->query($sql);  // 쿼리 송신

      $dataCount = $result->num_rows;

      for ($i = 0; $i < $dataCount; $i++) {
        $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
        echo "회원번호 {$memberInfo['myMemberID']}의 휴대폰번호는 " . $memberInfo['phone'];
        echo "<br>";
      }
    } else {
      echo "변경 실패";
    }
?>

실행결과

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사