![](/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.