如何显示和删除数据库中的数据?

时间:2014-11-18 18:46:39

标签: php database

我是PHP新手并尝试显示数据库中的数据并删除它

这用于查看数据

<?php
require_once 'config.php';
$que="SELECT `Fname`, `Lname` FROM `students`";
$myRun=  mysql_query($que);
$numOfRows=mysql_num_rows($myRun);
if ($numOfRows> 0) {

    while($row = mysql_fetch_array($myRun)) {
        echo "First Name: " . $row['Fname']. "  -  Last Name: " . $row['Lname'];
        echo '  <a href="update.php?id="/>Edit</a>
            <a href="delete.php?id="/>Delete</a><br/>';
    }
} else {
    echo "There isn't data to be viewed";
  }
?>

此部分用于删除,但我不知道如何获取ID

<?php
require_once 'config.php';
if(isset($_GET['ID'])){
    $id=$_GET['ID'];
    $sql="DELETE FROM `students` WHERE `ID`=$id";
    $myquery=  mysql_query($sql);
    if($myquery){
        echo 'The Student #'.$id.'has beed deledted!';
    }
}
?>

我为获取ID而做了什么,可以将其删除?

4 个答案:

答案 0 :(得分:0)

'id'!='ID' 试试

if(isset($_GET['id'])){
    $id = (int) $_GET['id'];
    if ($id > 0)
        $myquery=  mysql_query($sql);
}

答案 1 :(得分:0)

我看到的第一个问题是你没有从数据库中查询Id。将您的第一个查询更改为:

$que="SELECT `ID`, `Fname`, `Lname` FROM `students`"; 

如果学生表没有id,则改变表格给它一个,并可能使它成为主键并自动递增。

然后将删除链接更改为:

<a href="delete.php?ID=<?php echo $row['ID'];?>">Delete</a>

然后将您的评论更改为:

echo 'The Student #'.$_GET['ID'].'has been deleted!';

您可能希望代替使用ID进行评论,也可以传递名字和姓氏,并说学生“Bob Smith”已被删除。为此,您可以将删除链接更改为以下

<a href="delete.php?ID=<?php echo $row['ID'];?>&Fname=<?php echo $row['Fname'];?>&Lname=<?php echo $_GET['Lname'];?>">Delete</a>

现在,您将使用与其数据库等效名称相同的名称作为GET变量的名字和姓氏,这样您就可以执行此操作:

echo 'The Student #'.$_GET['ID'].' ('.$_GET['Fname'].' '.$_GET['Lname'].') has been deleted!';

最后,如上面的评论所述,您需要在删除ID之前清除ID,以避免sql注入。

您的删除行应为:

$sql="DELETE FROM `students` WHERE `ID`=".(int)$_GET['ID'];

答案 2 :(得分:0)

可能是这个帮助,请记住,如果您显示链接,他们必须具有ID:

$que="SELECT `ID`, `Fname`, `Lname` FROM `students`";
//more code...

  while($row = mysql_fetch_array($myRun)) {
      echo "First Name: " . $row['Fname']. "  -  Last Name: " . $row['Lname'];
      echo '  <a href="update.php?id="'.$row['ID'].'>Edit</a>
        <a href="delete.php?id="'.$row['ID'].'>Delete</a><br/>';
  }

来自评论(@Rasclatt):

if(isset($_GET['id']) && is_numeric($_GET['id'])){
    $id=$_GET['id'];

然后你可以改为PDO或mysqli(PDO作为建议)

答案 3 :(得分:0)

您需要将ID参数传递给URL中的脚本。这就是$_GET['ID']部分正在寻找的东西。

因此,您的网址将类似于http://website.com/delete_student.php?ID=5

然后,您的$id变量将正确设置,您的查询应该有效。

如果ID值来自表单,您也可以使用$_POST['ID']

您还应该考虑使用mysql_real_escape_string函数来提高代码的安全性http://php.net/manual/en/function.mysql-real-escape-string.php