2013-07-30 111 views
0

這和我上一次的程序一樣,但我使用更多的表格和信息,但它是相同的想法,但是當我嘗試在這裏運行它時,數據不會通過到數據庫,它重新加載舊信息,而不是我試圖發送的信息。當更新多個字段時,更新沒有推送到數據庫

<?php 
$page = "login"; 
$title = "LatinSoft - Login"; 

include "header.php"; 
include "config.php"; 


if (isset($_POST['submit']) && $_POST['submit'] == 'Update') { 

$updateQuery = ("UPDATE `users` SET email = '$_POST[email]', f_name = '$_POST[f_name]', 
       l_name = '$_POST[l_name]', m_name = '$_POST[m_name]', phone = '$_POST[phone]', 
       address = '$_POST[address]', city = '$_POST[city]', state = '$_POST[state]', 
       zip = '$_POST[zip]', rights = '$_POST[rights]', comp_name = '$_POST[comp_name]', 
       comp_tel = '$_POST[comp_tel]', comp_add = '$_POST[comp_add]', 
       comp_city = '$_POST[comp_city]', comp_state = '$_POST[comp_state]', 
       WHERE id = '$_POST[id]'"); 
//$link defined in config.php 
mysqli_query($link, $updateQuery); 


}; 

$query = ("SELECT `ID`, `email`, `f_name`, `l_name`, `m_name`, `phone`, `address`, `city`, `state`, `zip`, `rights`, `comp_name`, `comp_tel`, `comp_add`, `comp_city`, `comp_state` FROM `users`"); 
$result = mysqli_query($link, $query); 

echo "<table width=10% border=0 cellpadding=0 cellspacing=1> 

<tr> 
<th>Email</th> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Middle Name</th> 
<th>Phone</th> 
<th>Address</th> 
<th>City</th> 
<th>State</th> 
<th>Zip</th> 
<th>Rights</th> 
<th>Company Name</th> 
<th>Company Telephone</th> 
<th>Company Address</th> 
<th>Company City</th> 
<th>Company State</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) { 
?> 

<form method="post" action="updateuser.php"> 
<tr> 
<td><input type="text" name="email" value="<?php echo $row['email']; ?>"></td> 
<td><input type="text" name="f_name" value="<?php echo $row['f_name']; ?>" ></td> 
<td><input type="text" name="l_name" value="<?php echo $row['l_name']; ?>" ></td> 
<td><input type="text" name="m_name" value="<?php echo $row['m_name']; ?>"></td> 
<td><input type="text" name="phone" value="<?php echo $row['phone']; ?>" ></td> 
<td><input type="text" name="address" value="<?php echo $row['address']; ?>" ></td> 
<td><input type="text" name="city" value="<?php echo $row['city']; ?>" ></td> 
<td><input type="text" name="state" value="<?php echo $row['state']; ?>" ></td> 
<td><input type="text" name="zip" value="<?php echo $row['zip']; ?>" ></td> 
<td><input type="text" name="rights" value="<?php echo $row['rights']; ?>" ></td> 
<td><input type="text" name="comp_name" value="<?php echo $row['comp_name']; ?>" ></td> 
<td><input type="text" name="comp_tel" value="<?php echo $row['comp_tel']; ?>" ></td> 
<td><input type="text" name="comp_add" value="<?php echo $row['comp_add']; ?>" ></td> 
<td><input type="text" name="comp_city" value="<?php echo $row['comp_city']; ?>" ></td> 
<td><input type="text" name="comp_state" value="<?php echo $row['comp_state']; ?>" ></td> 
<td><input type="hidden" name="id" value="<?php echo $row['id']; ?>"></td> 
<td><input type="submit" name="submit" value="Update" ></td> 
</tr> 
</form> 

<?php 
} 
include "footer.php"; 
?> 
+0

也許第一查詢失敗?這需要進行基本的調試。您需要使用http://php.net/mysqli_error捕獲錯誤(也請注意,您的查詢容易受到SQL注入攻擊http://php.net/manual/en/security.database.sql-injection.php) –

+0

i知道這是可以運行的,它並不意味着用在任何合法的東西上,所以我只是測試一下。但查詢不會失敗,因爲我在phpmyadmin中運行相同的sql並且工作正常(顯然不使用變量) – Cesarg219

+0

永遠不要相信查詢,因爲您在phpMyAdmin中運行它。這將是所有病例中99%的根本原因。做適當的調試,捕獲錯誤消息。 –

回答

0

看看您的更新查詢。

刪除前,的WHERE

$updateQuery = ("UPDATE `users` SET email = '$_POST[email]', f_name = '$_POST[f_name]', 
      l_name = '$_POST[l_name]', m_name = '$_POST[m_name]', phone = '$_POST[phone]', 
      address = '$_POST[address]', city = '$_POST[city]', state = '$_POST[state]', 
      zip = '$_POST[zip]', rights = '$_POST[rights]', comp_name = '$_POST[comp_name]', 
      comp_tel = '$_POST[comp_tel]', comp_add = '$_POST[comp_add]', 
      comp_city = '$_POST[comp_city]', comp_state = '$_POST[comp_state]' 
      WHERE id = '$_POST[id]'"); 
+0

謝謝@RiggsFolly – Cesarg219

0

你在這裏有,錯誤:

.... comp_state = '$_POST[comp_state]', WHERE .... 

刪除,,然後再試一次

.... comp_state = '$_POST[comp_state]' WHERE .... 

這是錯誤但不要直接放$ _POST [xxxx ]因爲SQL注入等..

這樣的:

$email = mysqli_real_escape_string($link, trim($_POST['email'])); 
    $f_name = mysqli_real_escape_string($link, trim($_POST['f_name'])); 

    $updateQuery = ("UPDATE `users` SET email = '$email', f_name = '$f_name'.... // and so on...