PHP / MYSQL / HTML表格。如何一次更新多行表?

时间:2011-08-15 14:20:56

标签: php sql

我有以下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

1 个答案:

答案 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);

但是我建议你做这个循环,因为你不可避免地需要在这个查询的某个时候更新其他字段。