![](/img/trans.png)
[英]What is wrong with my code that data retrieving from database using prepare
[英]What is wrong with my code? Data is not deleted from database
我已經更新了代碼,但是不斷收到新的錯誤。 我真的希望有人能幫助我,看看我的代碼,看看有什么問題。 我在網頁上有一個數據庫表,並且每個表行上都有一個編輯按鈕和一個刪除按鈕。 目前,我只是想使Delete按鈕起作用,即使我選擇了該ID,它也不會刪除數據庫中的行。 看起來它正在獲取正確的ID。
有人能說出什么問題嗎? 下面是代碼...
<?php
require 'connect.inc.php';
if (isset($_POST['delete']) && isset($_POST['id'])) {
$id = get_post('id');
$query = "DELETE FROM movies WHERE id='.$id.' LIMIT 1";
if (!mysql_query($query, $db_server))
echo "DELETE failed: $query<br>".
mysql_error() . "<br><br>";
}
$query = "SELECT * FROM movies, categories WHERE movies.genre_id = categories.genre_id";
$result = mysql_query($query);
if (!$result) die ("Database access failed:" .mysql_error()) ;
$rows = mysql_num_rows($result);
echo '<table><tr><th>Title</th><th>Release year</th><th>Genre</th><th>Director</th><th>Update</th><th>Delete</th></tr>';
for ($j = 0 ; $j < $rows ; ++$j) {
$row = mysql_fetch_row($result);
//$id = $row[0];
echo '<tr><td>' .$row[1] . '</td>' ;
echo '<td>' .$row[2] . '</td>' ;
echo '<td>' .$row[3] . '</td>' ;
echo '<td>' .$row[4] . '</td>' ;
echo '<td>'."<a href='edit_movie.php?edit=" . $row[0] . "'>Edit</a>".'</td>';
echo '<td><form action="index.php" method="POST">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="id" value="'. $row[0] .'" />
<input type="submit" value="Delete" /></form>
</td></tr>' ;
}
echo '</table>';
include 'add_movie.php';
?>
您忘記關閉動作屬性。
您已echo '<td><form action="index.php method="POST">
更改為
echo '<td><form action="index.php" method="POST">
只是要清楚:'mysql_query'及其附帶的命令已被棄用,實際上不應該使用。 但是,OP表示需要進行分配。 替換它們的最簡單方法是使用“ mysqli_ *”代替。 有關使用參數綁定避免sql注入的示例: http : //www.php.net/manual/zh/mysqli-stmt.bind-param.php
不應該是:
if (isset($_POST['delete']) && isset($_POST['id'])) {
$id = mysql_real_escape_string($_POST['id']);
...
有關“ get_post”的一些信息,請參見此鏈接: PHP:get_post有問題
問題在於,函數“ get_post”是在課程文獻的下一頁上定義的,直到問詢者都沒有注意到。
變量$ _POST ['id']包含通過HTTP POST請求從表單發送的id值。 您檢查該值是否已設置,然后應像我寫的那樣將其分配給“ $ id”。
您的刪除SQL引號錯誤
$query = "DELETE FROM movies WHERE id='.$id.' LIMIT 1";
更改為
$query = "DELETE FROM movies WHERE id=".$id." LIMIT 1";
要么
$query = "DELETE FROM movies WHERE id=$id LIMIT 1";
嘗試更改表單操作
'<td><form action="index.php" method="POST">
還要檢查您的數據庫連接是否正確建立
也許這可能對get_post有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.