PHP MySQL Update Data
In this page:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
mysqli_query($conn, $sql);
mysqli_affected_rows($conn); // how many rows changed
एक WHERE Clause के साथ Basic UPDATE
UPDATE tableName SET column = newValue WHERE condition specified column बदलता है, सिर्फ condition से match करने वाली rows पर -- UPDATE users SET status = inactive WHERE id = 5 exactly एक user का status बदलता है, बाकी सबको untouched छोड़ते हुए।
उदाहरण: Basic UPDATE with a WHERE Clause
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, status TEXT)");
$db->exec("INSERT INTO users VALUES (5, 'active')");
$db->exec("UPDATE users SET status = 'inactive' WHERE id = 5");
// Print "Updated" to the output
echo "Updated";
?>
Login to try C/C++/Java/PHP code in the editor
एक साथ कई Columns Update करना
एक single UPDATE statement उन्हें commas से separate करके कई columns साथ बदल सकता है: UPDATE users SET name = ?, email = ?
WHERE id = ? एक query में एक specific user का name और email दोनों update करता है, दो अलग UPDATE statements चलाने के बजाय।
उदाहरण: Updating Multiple Columns at Once
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, name TEXT, email TEXT)");
$db->exec("INSERT INTO users VALUES (1, 'Old', '[email protected]')");
// Declare `$stmt`, set to `$db->prepare("UPDATE users SET name = :name, email = :email WHERE id = :id")`
$stmt = $db->prepare("UPDATE users SET name = :name, email = :email WHERE id = :id");
$stmt->bindValue(':name', 'Alice', SQLITE3_TEXT);
$stmt->bindValue(':email', '[email protected]', SQLITE3_TEXT);
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);
$stmt->execute();
// Print "Both columns updated in one query" to the output
echo "Both columns updated in one query";
?>
Login to try C/C++/Java/PHP code in the editor
कितनी Rows Update हुईं Check करना
mysqli_affected_rows($conn) report करता है कि सबसे हाल के UPDATE ने actually कितनी rows बदलीं -- यह confirm करने के लिए check करना उचित है कि एक update expected संख्या में rows से match हुआ, या यह detect करने के लिए कि एक ID बिल्कुल exist ही नहीं करती थी (0 rows affected)।
उदाहरण: Checking How Many Rows Were Updated
<?php
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, status TEXT)");
$db->exec("INSERT INTO users VALUES (1, 'active')");
$db->exec("UPDATE users SET status = 'inactive' WHERE id = 1");
echo $db->changes() . " row(s) updated"; // mysqli_affected_rows($conn) equivalent
?>
Login to try C/C++/Java/PHP code in the editor
किसी Value को उसकी Current Value के Relative Update करना
एक UPDATE SET clause के अंदर किसी column की अपनी current value को reference कर सकता है, जैसे UPDATE products SET stock = stock - 1 WHERE id = ?, जो मौजूदा stock count को एक से कम कर देता है -- counters, running totals, और inventory adjustments के लिए उपयोगी बिना पहले value को PHP में पढ़े।
उदाहरण: Updating a Value Relative to Its Current Value
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE products (id INTEGER, stock INTEGER)");
$db->exec("INSERT INTO products VALUES (1, 10)");
$db->exec("UPDATE products SET stock = stock - 1 WHERE id = 1");
// Declare `$result`, set to `$db->query("SELECT stock FROM products WHERE id = 1")`
$result = $db->query("SELECT stock FROM products WHERE id = 1");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
एक Condition Share करने वाली कई Rows Update करना
बिल्कुल DELETE की तरह, एक UPDATE का WHERE clause एक साथ एक से ज़्यादा row match कर सकता है -- UPDATE orders SET status = expired WHERE created_at < ? एक single statement में हर पुराना order update कर देता है, हर row को individually loop करके update करने से कहीं ज़्यादा efficient।
उदाहरण: Updating Multiple Rows That Share a Condition
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE orders (id INTEGER, created_at TEXT, status TEXT)");
$db->exec("INSERT INTO orders VALUES (1, '2020-01-01', 'open'), (2, '2024-01-01', 'open')");
$db->exec("UPDATE orders SET status = 'expired' WHERE created_at < '2023-01-01'");
// Print `$db->changes() . " old order(s) expired"` to the output
echo $db->changes() . " old order(s) expired";
?>
Login to try C/C++/Java/PHP code in the editor
- बिना WHERE clause के UPDATE table SET column = value चलाना, जो table की हर single row पर वह column update कर देता है।
- एक UPDATE की SET या WHERE values को unvalidated, unbound user input से बनाना, किसी भी दूसरे query type की तरह ही SQL injection का risk लेते हुए।
- किसी row की value को script में पहले पढ़े गए stale data के आधार पर update करना, किसी दूसरी process द्वारा बीच में किए गए change को overwrite करते हुए।
- UPDATE table SET col = newValue WHERE condition सिर्फ matching rows के specified columns बदलता है।
- बिना WHERE clause के UPDATE table की हर row update कर देता है -- हमेशा double-check करें कि एक WHERE clause मौजूद है।
- mysqli_affected_rows($conn) report करता है कि एक UPDATE ने actually कितनी rows बदलीं।
Chapter Quiz — Complete all 21 topics to unlock
0/21 topics done
Complete these topics first:
- PHP MySQL Introduction
- PHP MySQLi Connection
- PHP PDO Introduction
- PHP CRUD Operations
- PHP Prepared Statements
- PHP Stored Procedures
- PHP Transactions
- PHP Error Handling in DB
- PHP MySQL Connect
- PHP MySQL Create DB
- PHP MySQL Create Table
- PHP MySQL Insert Data
- PHP MySQL Get Last ID
- PHP MySQL Insert Multiple
- PHP MySQL Prepared Statements
- PHP MySQL Select Data
- PHP MySQL Where
- PHP MySQL Order By
- PHP MySQL Delete Data
- PHP MySQL Update Data
- PHP MySQL Limit Data