php
  • mysql
  • 2016-08-29 215 views 0 likes 
    0

    我正在嘗試更改表單數據並更新mysql中的數據。但是當我嘗試更新時,數據並沒有改變。表單頁面如下:php更新不起作用

    while ($list5 = mysql_fetch_array($result)) { 
         $reqitem=$list5['id']; 
        echo "<td width='34%' id='addinput'><input type='text' size='70' id='item_name$i' 
    name='item_name[$i]' placeholder='{$list5['prod_description']}' 
    value='{$list5['prod_description']}'></td>"; 
    } 
    

    而且保存頁面腳本如下:

    foreach($_POST['id'] as $key=>$value) 
    { 
        $item_name= $_POST['item_name'][$i]; 
        $q = "UPDATE poto_customer_items prod_description='$item_name' WHERE tender_id='$tender_id' and id='$value' "; 
        mysql_query($q) or die(mysql_error()); 
    } 
    

    我知道有一個與腳本問題。我對PHP很陌生,所以無法掌握我犯的錯誤。任何人都可以請幫我。

    以下是html代碼:

    <html> 
    <head> 
        <title></title> 
    </head> 
    <body> 
        <h3>&nbsp;</h3> 
        <form action='generate_quot_cust_edititems_save_1.php?tender_id=1400692' 
        class='single' id="cart" method='post' name='cart'> 
    
         <div class="base"> 
          <div align="left"> 
          <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>154<input id='item_name0' 
             name='item_name[0]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
           <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>155<input id='item_name1' 
             name='item_name[1]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
          <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>156<input id='item_name2' 
             name='item_name[2]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
           <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>157<input id='item_name3' 
             name='item_name[3]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
           <table border="1" cellpadding="3" cellspacing="3" style="border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>158<input id='item_name4' 
             name='item_name[4]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
           <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>159<input id='item_name5' 
             name='item_name[5]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div> 
         <div class="base"> 
          <div align="left"> 
           <table border="1" cellpadding="3" cellspacing="3" style= 
           "border-collapse: collapse;" width="100%"> 
            <tr> 
             <td id='addinput' width='34%'>160<input id='item_name6' 
             name='item_name[6]' placeholder='Packing Charges.' 
             size='70' type='text' value='Packing Charges.'></td> 
            </tr> 
           </table> 
          </div> 
         </div><br> 
    <input type='submit' value='--Update Data--' id='continue'/> 
         </form> 
    </body> 
    </html> 
    
    +2

    ** ** 1。不要使用已棄用的'mysql_ *'函數。它們自PHP 5.5起棄用,並在PHP 7中完全刪除。請改用MySQLi或PDO。 ** 2 **。您可以[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)開放,並且確實應該使用[Prepared Statements](http://php.net/manual) /en/mysqli.quickstart.prepared-statements.php),而不是串聯你的查詢(如果你使用MySQLi或PDO的話)。 –

    +0

    你可以發佈HTML的問題,因爲它會是有用的找出你所犯的錯誤。 –

    +0

    像下面這樣使用'SET' '$ q =「UPDATE poto_customer_items SET prod_description ='$ item_name'WHERE tender_id ='$ tender_id'和id ='$ value'「;' 我也建議你不要使用mysql_ *。使用mysqli或PDO。這些被推薦用於PHP 7,也有使用的mysqli像這麼多的好處 - 面向對象的接口, - 支持預處理語句, - 支持多個語句, - 支持交易, - 增強的調試功能, - 嵌入式服務器支持 – Manish

    回答

    0

    下位在save.php看起來腥:

    foreach($_POST['id'] as $key=>$value) 
    { 
        //$item_name= $_POST['item_name'][$i]; 
        $q = "UPDATE poto_customer_items set prod_description='$value' WHERE tender_id='$tender_id' and id='$key' "; 
        mysql_query($q) or die(mysql_error()); 
    } 
    

    你不應該被遍歷$_POST['item_name']?是這樣的:

    foreach($_POST['item_name'] as $key=>$value) 
    { 
    
        $item_name= $_POST['item_name'][$i]; 
        $q = "UPDATE poto_customer_items set prod_description='$value' WHERE tender_id='$tender_id' and id='$key' "; 
        mysql_query($q) or die(mysql_error()); 
    } 
    

    如果這是你甚至可以考慮改變你的表單頁面邏輯如下情況:

    while ($list5 = mysql_fetch_array($result)) { 
         $reqitem=$list5['id']; 
        echo "<td width='34%' id='addinput'><input type='text' size='70' id='item_name$i' 
    name='item_name[$reqitem]' placeholder='{$list5['prod_description']}' 
    value='{$list5['prod_description']}'></td>"; 
    } 
    
    +0

    這是我困惑的地方。我應該循環播放id或項目名稱? –

    +0

    在你的HTML你沒有發佈任何輸入名稱'ID' ... –

    +0

    所以我需要修改完整的代碼? –

    0

    你錯過set條款:

    $q = "UPDATE poto_customer_items set prod_description='$item_name' WHERE tender_id='$tender_id' and id='$value' "; 
    

    提示:停止使用不贊成mysql_* API。使用mysqli_*PDO與準備好的陳述。 mysql_*將在下一個版本的php中被刪除,並且準備好的語句可以防止SQL注入。

    +0

    'mysql_ *'實際上已經被刪除,因爲PHP 7.0 –

    +0

    我剛剛用SET更新了腳本,但出現了問題。表格中有6行。當我點擊提交按鈕時,它將最後一行的值更新爲所有其他6行。 –

    +0

    可能是id和data iam沒有正確傳遞到保存頁面?也許是 –

    0

    替換您如下行

    $q = "UPDATE poto_customer_items prod_description='$item_name' WHERE tender_id='$tender_id' and id='$value' "; 
    

    $q = "UPDATE poto_customer_items SET prod_description='$item_name' WHERE tender_id='$tender_id' and id='$value' "; 
    
    +0

    我剛用SET更新腳本,但有問題。表格中有6行。當我點擊提交按鈕時,它將最後一行的值更新爲所有其他6行。 –

    +0

    我不明白你的觀點朋友你能解釋一下你想說的嗎? –

    +0

    我已將html部分添加到我的問題中。它只是一個帶有項目名稱的簡單表單。有6排。所以用戶更新項目名稱並提交它,它應該在mysql數據庫中更改。這是實際的要求。 –

    相關問題