2013-09-30 69 views
0

好,我敢肯定,這是可以做到,我看到類似的東西對這個職位 Updating multiple rows in MySQL更新多行的MySQL

所以我需要確保的是怎麼會有我賴特是我的。我有一個數據庫,列出工作人員的主要位置以及其他相關辦公室的位置。我希望能夠更新包含單個員工信息的表格,但我不知道我需要循環多少次。

所以說我有薩利和她與2個辦公地點聖保羅和芝加哥相關。然後,我有隻與紐約有關的彼得。

表將如下

爲Sally 主鍵101
LocationID 1 STAFFID 1 PrimaryLoc 1

主鍵102
LocationID 2 STAFFID 1 PrimaryLoc 0

對於彼得 主鍵103
LocationID 3 2 STAFFID PrimaryLoc 1

我知道插入一個會

UPDATE loc_tbl SET locationID=%s, PrimaryLoc=%s WHERE staffID=%s 

所以如果我通過這次要循環我會用一個像這樣循環? ...是爲了從幾個文本框中提取東西的部分。

for($i=$totalRows; $i>=0;$i--){ 
    UPDATE loc_tbl SET locationID=%s, PrimaryLoc=%s WHERE staffID=%s .... 
    } 

還是有更好的方式來做到這一點?

+0

你可能需要在這裏透露更多的細節,你有什麼更新locationID和PrimaryLoc什麼? –

+0

是否要更新**所有**員工或只是其中一些員工。如果只有一些,你知道確切的標準嗎? 你'UPDATE'聲明將盡一切在數據庫方面的循環。 –

+0

對不起,我希望能夠更改主要位置,並且一次只有一名工作人員。 – puddleJumper

回答

0

MySQL不支持多個查詢爲您引用的帖子稱:請求mysql_query()發送一個唯一的查詢(多個查詢不支持)。

當你刪除,添加或在phpMyAdmin更新爲此,它使用多個查詢,爲什麼要我們做的有什麼不同? SQL可以執行類似100,000次查詢/秒! ref:http://yoshinorimatsunobu.blogspot.co.uk/2010/10/using-mysql-as-nosql-story-for.html

我假設你會從表單數組中扔這個數據?

$id = ('101','201','301'); 
$users = array('sally','john','james'); 
$office = array('Bristol','Bath','London'); 
$assistant = array('John','Ellen','Richard'); 

$count = count($users); 

for($i=0; $i<$count; $i++) { 
    $query = "UPDATE table SET 
    user = '$users[$i]', 
    assistant = '$assistant[$i]', 
    office = $office[$i], 
    WHERE id = '$id[$i]'"; 

    mysqli_query($link, $query); 
} 

這對我的作品,並會在幾分之一秒內完成。

+0

對不起,我沒有迴應很快,我發佈後,我有點生病,我有點w。。我其實並不需要更新所有的人我只需要一次更新1人,所以我想我可以刪除並重新添加我想更新的空間,但你會怎麼寫呢,如果你不知道這個人的辦公室數量是多少? – puddleJumper

+0

我不明白,如果您需要更新數據庫中的單個條目,則只需執行一個更新查詢。你的桌子佈置得如何?如果它在兩個表中可能類似於$ query =「UPDATE table SET name = $ name WHERE id =(SELECT id FROM table WHERE staffID ='$ staffID')」; ?? – Edward

+0

它不一定是單個條目,它可以是一個單一的工作人員,可以有多個條目進入我正在編輯的表格中。無論如何,我已經修復了它,我使用了刪除/添加回數據庫的工作。 – puddleJumper