如何使用php更新mysql数据库中的连续行?

时间:2012-03-06 07:31:46

标签: php mysql

我有一个值列表,我试图进入一个动态行数的mysql数据库。变量存储在$ box1,$ box2中,依此类推。我试图使用UPDATE在表的每个连续行中输入正确的值(选择的第一行中的$ box1,选择的第二行中的$ box2,依此类推)。我不确定在“while”循环中输入什么代码才能实现这一点。

    <?php


        // Retrieve data from Query String
    $box1 = $_GET['box1'];
    $box2 = $_GET['box2'];
    $box3 = $_GET['box3'];
    $box4 = $_GET['box4'];
    $box5 = $_GET['box5'];
    $session = session_id();


        //build query
    $query = "SELECT * FROM sessionid WHERE sessionid='$session' ";

        //Execute query
    $qry_result = mysql_query($query) or die(mysql_error());

        // Insert the right quantity in each row for each consecutive box 
        $i=1;
        while($row = mysql_fetch_array($qry_result)){
            mysql_query("UPDATE `sessionid` SET `qt`='$box' .$i . '' WHERE `sessionid`='$session' ");
            $i++;
            }


    ?>

我现在将上一页网址中的数据输入到数组$ box [1]中。我一直收到错误说:解析错误:语法错误,意外''',期待第13行/home/content/c/a/s/cashme/html/buylooper/change-qt.php中的T_STRING或T_VARIABLE或T_NUM_STRING 。第13行是指UPDATE查询的行。有没有提示?

//Retrieve data from Query String, input into array, and update table
        $count = $_SESSION['id'];
        for ($i=1; $i<$count; $i++){
                $box[$i] = $_GET['box'. $i .''];
            mysql_query("UPDATE `sessionid` SET `qt`='$box["'. $i .'"]' WHERE `sessionid`='$session' AND `id`='$i' ");
            echo $box[$i];
        }

3 个答案:

答案 0 :(得分:2)

你必须从心里学到最基本的东西:

数据库中没有连续的行。

所有行都是完全随机的 而且你不能以任何方式依赖他们的自然秩序。

要更新某一行,您必须使用某个唯一字段来识别它。 Mysql的标准自动递增id是最佳选择。

始终将行的id存储在表单中,以便能够知道当前行的值属于哪一行 像这样制作你的表格

<input type="text" name"box[1]" value="20">

其中1是实际行的ID

另请注意,所有数据操作都必须使用POST方法执行,而不是GET。

因此,在$_POST['box']中,您将拥有一对id => value数组,并且可以轻松地构建更新查询。

答案 1 :(得分:1)

为什么不在数组中将变量$box1存储到$ box5`而不是5个变量?

然后您可以使用$boxes[$i]来调用相关值。

答案 2 :(得分:0)

你需要

"UPDATE `sessionid` SET `qt`="'.$box.$i . '" WHERE `sessionid`="'.$session.'"

此外,您应该将值存储在Array中,而不是将$box个变量

分开 你可以使用

$box[]

不是

$box1,$box2, etc...