I have following example of the PHP/SQL which worked perfectly when editing one row & saving changes.
It is working based on POST/GET method - where URL is setting up which row ID to edit / save.
form -> post id & live values
seperate php file -> get 'id' and change row with this 'id'.
<?php
session_name('users');
session_set_cookie_params(2*7*24*60*60);
session_start();
define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
if(!$_SESSION['id']) {
header ("Location: index.php");
}
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$id = clean($_P开发者_如何学JAVAOST['id']);
$usr2 = $_SESSION['usr'];
$live = (isset($_POST['live']))?1:0;
$updated = date("F j, Y, g:i a",time()+60*60);
$title = clean($_POST['title']);
$content = clean($_POST['content']);
//Create INSERT query
$qry = "UPDATE table SET live = '$live' WHERE id='".mysql_real_escape_string($_POST['id']). "' ";
$result = mysql_query($qry);
echo mysql_error();
//Check whether the query was successful or not
if($result) {
header("location: notes.php");
exit();
}else {
die("Query failed");
}
?>
My question is how to update multiple rows table/form like this one?
The best way to do it is with a simple for loop.
foreach ($_POST as $key=>$value) {
// You didn't provide the names of the fields, so you will need to validate them here yourself.
// I usually name them with a prefix, like somefield_3, and then I can use substr() to determine if the field is the one I'm looking for.
$result=mysql_query("UPDATE whatever SET somefield=1 WHERE id=" . mysql_real_escape_string($key) . ";");
//etc., etc.
}
Since you are only setting one boolean field, you could also do something like this:
UPDATE table SET live=1 WHERE id IN (1,2,3,4,5);
But I'd recommend doing the loop, since you will inevitably need to update other fields at some point with this query.
精彩评论