2011-11-27 54 views
0

我有這個代碼的問題,它確實刪除了一行但沒有編輯一個。我無法弄清楚如何使它工作。 這裏的腳本:無法更新數據槽PHP

<?php 
if($_POST['delete']){ 

    $i = 0; 
    while(list($key, $val) = each($_POST['checkbox'])) { 
     $sql = "DELETE FROM $tbl_name WHERE id='$val'"; 
     mysql_query($sql); 
     $i += mysql_affected_rows(); 
    } 

    // if successful redirect to delete_multiple.php 
    if($i > 0){ 
     echo '<meta http-equiv="refresh" content="0;URL=data.php">'; 
    } 
} 

if($Submit){ 
    for($i=0;$i<$count;$i++){ 
     $sql="UPDATE $tbl_name SET naam='$naam[$i]', achternaam='$achternaam[$i]', leeftijd='$leeftijd[$i]', straat='$straat[$i]', postcode='$postcode[$i]', telefoon='$telefoon[$i]', email='$email[$i]', geslacht='$geslacht[$i]', pakket='$pakket[$i]', WHERE id='$id[$i]'"; 
     $result1=mysql_query($sql1); 
    } 
} 

mysql_close(); 
?> 
+0

您沒有描述具體問題。請嘗試詳細瞭解什麼不起作用 –

+0

$提交沒有在代碼中的任何位置設置? – Taz

+2

歡迎來到Stack Overflow!你顯示的代碼容易受到[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)的影響。使用適當的衛生方法(例如'mysql_real_escape_string()'用於傳統的mysql庫),或切換到PDO並準備好語句。 –

回答

0

$Submit在使用前沒有定義。所以,它的值將是null這是一個falsy值。因此if循環將永遠不會執行。

+0

也許這給了更多的見解:www.iimages.org/data.txt – Dave

+0

我無法訪問該文件 – robert

+0

http://grafx4you.nl/data.txt – Dave

1

正如其他人指出在if聲明之前沒有定義$ Submit,也沒有定義$ tbl_name,因此如果if語句被觸發,它將返回一個錯誤。

還在$ result1中使用了$ sql1 - $ sql1尚未定義。

你容易受到SQL injections像佩卡說,所以我建議在這讀了,總是,總是驗證用戶輸入的數據,從不相信任何人:)

而且,你不需要打印元刷新,你可以只使用header

header ("Location: data.php"); 
0

$Submit沒有被定義(如其他已經提到)。另外,如果確實定義了$Submit,則$count仍未定義。所以你仍然不會進入for循環。如果定義了$count,則代碼仍不會更新數據庫。您將您的sql查詢存儲在$sql中,但通過$sql1(尚未設置)作爲應執行的查詢。

而且您的代碼已廣泛用於sql注入。你想要那個。