簡體   English   中英

如何使用php更新mysql數據庫中的連續行?

[英]How do I update consecutive rows in a mysql database using php?

我有一個值列表,我試圖輸入具有動態行數的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++;
            }


    ?>

現在,我將前一頁url中的數據輸入到數組$ 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];
        }

您必須認真學習的最基本的東西:

數據庫中沒有連續的行。

所有行都是完全隨機的。
而且您不能以任何方式依賴它們的自然順序。

要更新某行,您必須使用一些唯一字段來標識它。 Mysql的標准自動遞增ID是最佳選擇。

始終以表格形式存儲行的ID,以便能夠知道當前值屬於哪個行。
使你的形式像這樣

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

其中1是實際行的ID

還要注意,所有數據操作都必須使用POST方法而不是GET執行。

因此,在$_POST['box'] ,將有一個對id => value對的數組,可以輕松地從中構造更新查詢。

為什么不將變量$box1到$ box5`而不是5個變量存儲在數組中?

然后,您可以使用$boxes[$i]調用相關值。

你需要

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

另外,您應該將值存儲在數組中,而不是單獨的$box變量

你應該使用

$box[]

$box1,$box2, etc...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM