2013-02-28 98 views
0

因此,在我的網站中,我試圖創建一個頁面,人們可以編輯哪個URL位於某個mySQL表中,這是我的代碼,然後再繼續前進(至少他們提交自己的價值後,它的一個組成部分)SQL更新命令更新列中的所有值

  while($row=mysql_fetch_array($result)) 
    { 
    $title = $row['title']; 
    $url=$row['url']; 
    $id = $row['inid']; 
    echo "<input type='button' id='delete' value='X' onclick='return Deleteqry($id)' />"; 
    echo "<form action='admin.php' method='POST'><input type='text' name='urledit' /><input type='submit' name='redit' /></form>"; 
    echo $title . '</br>'; 
    echo $url . '</br></br>'; 
      if(isset($_POST['redit'])) 
      { 
       $newd = $_POST['urledit']; 

       mysql_query("UPDATE `insects` SET url = '$newd' WHERE inid = $id "); 
       header("location: admin.php"); 
      } 
    } 

除了唯一的問題是taht,它在表上更新所有的「URL」行。有人能幫我一下嗎?

+0

更改表名的單引號反引號 – irregularexpressions 2013-02-28 06:52:02

+0

我假設命令$ id = 2是故意的?你的表中有多少個不同的inid值? – acutesoftware 2013-02-28 06:53:18

回答

1

嘗試更改表名中的單引號以反引號,並從2中刪除單引號,因爲它是一個整數。

同時檢查您的數據庫以確保您在測試較早的查詢時沒有無意中將該列中的所有值更改爲2。

+0

謝謝,但仍然一次更新他們全部 – user2016831 2013-02-28 06:54:20

+0

但我認爲這不是原因。因爲他說所有的行都在更新。這怎麼可能?該查詢應該只更新具有inid = 2的行,作爲charecter或integer ..不是嗎? – Nevin 2013-02-28 06:57:27

+0

我認爲你是對的。當您測試較早的查詢時,您可能無意中將所有值更新爲2。 – irregularexpressions 2013-02-28 07:03:07

1

如果inid的行類型爲int,則從表名中除去單引號,並從末尾的2中除去單引號,因爲它是整數。

mysql_query("UPDATE insects SET url = '$newd' WHERE inid = 2 "); 
0
mysql_query("UPDATE 'insects' SET url = '$newd' WHERE inid = '2' "); 

你總是更新,其中INID = 2,所以我猜你的數據庫中的所有您的URL行已經與INID值「2」

+0

好吧,基本概念起作用了,但是現在當我想爲每個值編輯它時,我把isset函數放在我的while循環中(我將編輯我的帖子給你看),現在它再次執行它 – user2016831 2013-02-28 06:58:04

0

兄弟, 你CHACK您表?你使用自動增量爲inid。 請檢查您的表是否爲inid具有相同的值。

我沒有看到您的查詢任何錯誤。