我有以下PHP / SQL示例,在编辑一行时可以很好地工作。保存更改。
它基于POST / GET方法工作 - 其中URL设置要编辑/保存的行ID。
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($_POST['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");
}
?>
我的问题是如何更新多行表/表格,如 this one ?
答案 0 :(得分:1)
最好的方法是使用简单的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.
}
由于您只设置了一个布尔字段,您还可以执行以下操作:
UPDATE table SET live=1 WHERE id IN (1,2,3,4,5);
但是我建议你做这个循环,因为你不可避免地需要在这个查询的某个时候更新其他字段。