2012-12-08 29 views
-1

我有一個php表單來更新MySQL表格。取得完美的作品,但更新不起作用。這是我的表單代碼:PHP + MySQL - 無法一次更新多個表格

<?php 

$sql= "SELECT client.resID AS resID, client.resName AS resName FROM client WHERE client.resID =".$_GET["resID"]; 
$rs = mysql_query($sql) or die($sql."<br/><br/>".mysql_error()); 

$sqlM= "SELECT menu.id AS mid, menu.name AS mname FROM menu WHERE menu.resID =".$_GET["resID"]; 
$rsM = mysql_query($sqlM) or die($sqlM."<br/><br/>".mysql_error()); 

$sqlF= "SELECT facilities.id AS fid, facilities.name AS fname FROM facilities WHERE facilities.resID =".$_GET["resID"]; 
$rsF = mysql_query($sqlF) or die($sqlF."<br/><br/>".mysql_error()); 

$sqlS= "SELECT services.id AS sid, services.name AS sname FROM services WHERE services.resID =".$_GET["resID"]; 
$rsS = mysql_query($sqlS) or die($sqlS."<br/><br/>".mysql_error()); 

// $names array now contains all names 

$i = 0; 


echo '<table width="50%">'; 
echo '<tr>'; 
echo '<td>ID</td>'; 
echo '<td>Name</td>'; 
echo '<td>Edit</td>'; 
echo '</tr>'; 

echo "<form name='form_update' method='post' action='client_admin_post.php'>\n"; 

while ($fm = mysql_fetch_array($rsM)) { // loop as long as there are more results 
    $mnames[] = $fm['mname']; 
    $mid[] = $fm['mid']; // push to the array 


echo '<tr>'; 
echo "<td>Menu :</td>"; 
echo "<td><input type='text' size='40' name='mname' value='{$fm['mname']}' /></td>"; 
echo "<td>{$fm['id']}<input type='hidden' name='mid' value='{$fm['mid']}' /></td>"; 
echo '</tr>'; 
++$i; 

print_r($mnames); 
} 

while ($ff = mysql_fetch_array($rsF)) { // loop as long as there are more results 
    $fnames[] = $ff['fname']; 
    $fid[] = $ff['fid']; // push to the array 


echo '<tr>'; 
echo "<td>Facilities :</td>"; 
echo "<td><input type='text' size='40' name='fname' value='{$ff['fname']}' /></td>"; 
echo "<td>{$ff['id']}<input type='hidden' name='fid' value='{$ff['fid']}' /></td>"; 
echo '</tr>'; 
++$i; 


} 

while ($fs = mysql_fetch_array($rsS)) { // loop as long as there are more results 
    $snames[] = $fs['sname']; 
    $sid[] = $fs['sid']; // push to the array 


echo '<tr>'; 
echo "<td>Services :</td>"; 
echo "<td><input type='text' size='40' name='sname' value='{$fs['sname']}' /></td>"; 
echo "<td>{$fs['id']}<input type='hidden' name='sid' value='{$fs['sid']}' /></td>"; 
echo '</tr>'; 
++$i; 


} 

echo'<tr> 
<td colspan="3" align="center"><input type="submit" name="Submit" value="Submit"></td> 
</tr> 
</table> 
</form>'; 



?> 

這是我的郵編:

$size = count($_POST['mname']); 

$i = 0; 
while ($i < $size) { 
$mname= $_POST['mname'][$i]; 
$mid = $_POST['mid'][$i]; 


$query = "UPDATE menu SET name = '$mname' WHERE id = '$mid' LIMIT 1"; 
mysql_query($query) or die ("Error in query: $query"); 
echo "$mname<br /><br /><em>Updated!</em><br /><br />"; 
++$i; 
} 


$size = count($_POST['fname']); 

$i = 0; 
while ($i < $size) { 
$fname= $_POST['fname'][$i]; 
$fid = $_POST['fid'][$i]; 


$query1 = "UPDATE facilities SET name = '$fname' WHERE id = '$fid' LIMIT 1"; 
mysql_query($query1) or die ("Error in query: $query1"); 
echo "$fname<br /><br /><em>Updated!</em><br /><br />"; 
++$i; 
} 


$size = count($_POST['sname']); 

$i = 0; 
while ($i < $size) { 
$sname= $_POST['sname'][$i]; 
$sid = $_POST['sid'][$i]; 

$query3 = "UPDATE services SET name = '$sname' WHERE id = '$sid' LIMIT 1"; 
mysql_query($query3) or die ("Error in query: $query3"); 
echo "$sname<br /><br /><em>Updated!</em><br /><br />"; 
++$i; 
} 

我曾在博文頁面,但沒有「更新」狀態在MySQL表更新。如何解決這個問題呢?真的很感謝你的幫助:D

+1

** WARNING **你的代碼從[SQL注入漏洞(HTTP遭受! //en.wikipedia.org/wiki/SQL_injection)。您應該[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli),以便您可以使用[帶有參數化查詢的預準備語句]( http://en.wikipedia.org/wiki/Prepared_statement)。 – Charles

+0

我仍然是初學者,我仍然在學習php。當然,如果我想構建一個永久頁面,我將使用PDO或MySQLI。我仍然在學習基本:) – user1822825

回答

0

您正在創建具有相同名稱的多個輸入,例如「fname」,但您試圖訪問它們,就好像它們是數組一樣。重命名類似以下領域:

echo "<td><input type='text' size='40' name='mname[]' value='name' /></td>"; 
0

太長的問題,但如果你,但通過更新狀態在後頁你的意思是說它回聲更新,如果我是正確的,它會回聲更新,因爲你檢查它在while和條件爲真。但是,您是否在帖子頁面中回覆了發佈的值,然後在詢問這些長問題之前,檢查您是否獲得了價值,以此方式查找哪裏存在問題。

0

你可以在MySQL中,如果你想要的所有查詢必須執行,否則沒有使用transacrions。

由於在查詢結束時,您只是回顯「已更新」,因此您的帖子頁面顯示已更新,因此應該打印時沒有任何條件。

,不更新你的數據,你沒有指定的任何請求mysql_query連接變量(「查詢」,$康恩)

+0

@PédeLeão是正確的,你正在創建多個同名的輸入,你可以使用像name = mname [],name = fname [],name = sname [] 和thn on post頁面使用foreach循環遍歷每個名​​稱的數組。 – sven