2013-03-13 91 views
0

我想創建一個表,將允許我通過單擊刪除按鈕刪除行。我在下面的鏈接中找到了一篇文章,它提供了一些幫助,但我仍然無法使其工作:Show all rows in mysql table then give option to delete specific ones。我編寫了大部分代碼,但是我在delete.php頁面的第10行有問題。想法?刪除行與輸入按鈕

Main.php

$result = mysqli_query($con,"SELECT * FROM cs_general_info"); 

echo "<table><tr><td>Delete</td><td>First Name</td><td>Last Name</td><td>Address</td>td>Phone</td><td>E-Mail Address</td></tr>"; 

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

?> 

<tr> 
<td> 
<form action="delete.php" method="POST"> 
<input type="hidden" name="delete_id" value="<?php echo $row['id']; ?>"> 
<input type="Submit" value="Delete"></form> 
</td> 

<?php 

    echo "<td>" . $row['id'] ."</td>"; 
    echo "<td>" . $row['first_name'] . "</td>"; 
    echo "<td>" . $row['last_name'] . "</td>"; 
    echo "<td>" . $row['address'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td>"; 
    echo "<td>" . $row['email'] . "</td></tr>"; 

} 

echo "</table>"; 

Delete.php

"DELETE FROM cs_general_info WHERE id=".mysql_real_escape_string($delete_id); 
+1

'mysql_real_escape_string()'被棄用。使用'PDO'或至少綁定你的參數。 – 2013-03-13 16:49:27

+0

沒有安全性?我可以看到如何輕鬆地破解這些代碼的幾種方法... – jcho360 2013-03-13 16:50:46

+1

第10行有什麼問題? – jeroen 2013-03-13 16:50:49

回答

0

希望delete.php比單線更多。在delete.php你會想趕上POST方法和$row[id];綁定它,然後刪除它。

0

爲了得到你想要在你的delete.php文件刪除的行的id,你需要得到的變量,就像這樣:

$delete_id = $_POST['delete']; 

警告:這是非常基本的功能,你需要得到這個上班。但是,在實現任何生產代碼之前,您需要實現許多其他級別的安全性。

+0

我對PHP相當陌生,每個人都不斷提及安全性。你有沒有可以參考的參考資料來學習更多關於PHP安全性的知識? – thebradnet 2013-03-13 17:01:03

+0

谷歌「PHP SQL注入」或類似的東西。那裏有數百萬篇文章。爲了讓你入門,這裏有一篇關於PHP.net網站的文章,至少給你提供了我們正在討論的問題的基本概述:http://php.net/manual/en/security.database.sql-injection .php – Steve 2013-03-13 17:17:34

+0

好價錢!非常感謝。 – thebradnet 2013-03-13 17:57:56

0

你想要麼把內每個錶行的鏈接或內嵌的形式,然後有刪除指定的行並返回用戶訪問網頁的腳本。

<table> 
    <tbody> 
<?php foreach ($results as $result): ?> 
    <tr> 
     <td><?php echo $result->title; ?></td> 
     <td> 
     <form action="delete.php" method="post"> 
      <input type="hidden" name="id" value="<?php echo $result->id; ?>" /> 
      <input type="submit" value="Delete" /> 
     </form> 
     </td> 
    </tr> 
<?php endforeach; ?> 
    </tbody> 
</table> 

然後delete.php

<?php 

if (isset($_POST['id']) && intval($_POST['id']) > 0) { 
    // create PDO instance; assign it to $db variable 
    $sql = "DELETE FROM `table` WHERE `id` = :id LIMIT 1"; 
    $smt = $db->prepare($sql); 
    $smt->bindParam(':id', $_POST['id'], PDO::PARAM_INT); 
    $smt->execute(); 
} 

header('Location: index.php');