Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

PHP Script นับจำนวนแถวที่ได้รับผลกระทบจาก MySQL Query

ใช้ฟังก์ชัน mysql_affected_rows() (Deprecated) หรือเมธอดของ PDO/MySQLi เพื่อนับจำนวนแถวที่ถูกเปลี่ยนแปลงโดยคำสั่ง INSERT/UPDATE/DELETE

โค้ด PHP แบบเก่า (mysql_* - Deprecated)

<html>
  <head>
    <title>Rows affected by query</title>
  </head>
  <body>
    <?php
      $dbhost = 'localhost:3036';
      $dbuser = 'root';
      $dbpass = 'rootpassword';
      $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      if (!$conn) {
        die('Could not connect: ' . mysql_error());
      }
      echo 'Connected successfully<br />';
      mysql_select_db('TUTORIALS');
      $result_id = mysql_query($query, $conn_id);
      $count = ($result_id ? mysql_affected_rows($conn_id) : 0);
      print("$count rows were affected\n");
    ?>
  </body>
</html>

⚠️ หมายเหตุ: โค้ดตัวอย่างมีตัวแปร $query และ $conn_id ไม่ได้ประกาศ - เป็นโค้ดไม่สมบูรณ์

แนะนำ: ใช้ PDO หรือ MySQLi

PDO: ใช้ rowCount()

<?php
$pdo = new PDO("mysql:host=localhost;dbname=TUTORIALS;charset=utf8mb4", "root", "rootpassword");
$stmt = $pdo->exec("UPDATE table SET col = 'value' WHERE condition");
echo "Rows affected: " . $stmt; // exec() คืนจำนวนแถวโดยตรง
// หรือสำหรับ prepared statement:
$stmt = $pdo->prepare("UPDATE table SET col = ? WHERE id = ?");
$stmt->execute(['value', 1]);
echo "Rows affected: " . $stmt->rowCount();
?>

MySQLi: ใช้ affected_rows

<?php
$mysqli = new mysqli("localhost", "root", "rootpassword", "TUTORIALS");
$mysqli->query("UPDATE table SET col = 'value' WHERE condition");
echo "Rows affected: " . $mysqli->affected_rows;
?>

สรุป: ใช้ PDO::exec() หรือ PDOStatement::rowCount() / mysqli::affected_rows แทน mysql_affected_rows() ที่ล้าสมัยแล้ว