2

我正在尝试在同一页面上删除、编辑和添加新的重新编码,但似乎无法使其正常工作。而且我不想使用 ajax jquery 或 java 脚本但只有 php。我需要以下帮助我的代码:

<?php
include_once('con.php');

$strSQL = "SELECT film_id, name
from
filmsbox";
$rs     = mysql_query($strSQL);
echo "<table border='1' ><tr bgcolor='#eeeeee'><td>Name</td> <td colspan='2'>Action</td></tr>";
while($row = mysql_fetch_assoc($rs))
{
    $film_id = $row['film_id'];
    $name    = $row['name'];

    $hometeam= mysql_real_escape_string($name);
    echo "<tr bgcolor='#eeeee'><td>$name</td> <td><a href='index.php?film_id=$film_id' name ='edit'>Edit</a></td><td><a href='index.php?film_id=$film_id' name ='delete'>Delete</a></td></tr>";

}
?>
<?php
$strSQL = "SELECT film_id, name
from
filmsbox";
$rs     = mysql_query($strSQL);
$row    = mysql_fetch_assoc($rs);
$film_id= $row['film_id'];
$name   = $row['name'];

$name   = mysql_real_escape_string($name);

$film_id= $_GET['film_id'];
?>
<?php

if(isset($_POST['edit'])){
    ?>
    <table>
    <form action="index.php" method="post">
    <tr>
        <td>
            Name
        </td>
        <td>
            <input type = "text" name = "name" value="<?php echo $name;?>">
        </td>
    </tr>
    <input name="film_id" type="hidden" id="film_id" value="<?php echo $film_id; ?>">
    <tr>
        <td>
            <input type = "submit" name = "submit" value="update">
        </td>
    </tr>
    <?php
    $name = (isset($_POST['name']))? trim($_POST['name']): '';
    $film_id = $_POST['film_id'];
    $sql     = "UPDATE filmsbox SET name='$name'
    WHERE film_id ='$film_id'";
    $result  = mysql_query($sql);
    if($result)
    {
        echo "Success";
    }
    else
    {
        echo "Error";
    }
}
?>
<?php
/*Delete section*/
if(isset($_POST['delete']))
{
    $film_id = $_GET['film_id'];
    $delete  = "DELETE FROM filmsbox WHERE film_id = '$film_id'";
    $result  = mysql_query($delete);
    if($result)
    {
        echo "Record deleted successfuly ";
    }
    else
    {
        echo "No data deleted";
    }
}
?>
4

1 回答 1

2

几个指针:

  1. 您只需要在它们进入数据库之前转义值,而不是在它们出来并在 HTML 中使用时,即$hometeam = mysql_real_escape_string($name);

  2. 您快速连续两次从数据库中提取相同的查询,这是不需要的。$strSQL = "SELECT film_id, name from filmsbox"; $rs = mysql_query($strSQL);您可以从代码顶部删除两个部分之一

  3. 您需要先对数据运行任何更新/删除查询,然后再执行选择查询以提取页面的记录,否则您的更改将不会显示

  4. 您应该转义更新和删除查询的值以防止 SQL 注入

编辑:要在编辑模式下重新加载页面,您需要将表中的链接 URL 更改为类似

<a href='index.php?film_id=$film_id&edit=1' name ='edit'>Edit</a>

然后你的编辑块需要

if ($_GET['edit']) {

我想明确一点,这绝不是一种编辑值的安全方法,因为任何人都可以?edit=1输入 url 并获取表单

于 2013-04-30T12:50:56.697 回答