使用php删除mysqli中的学生数据

时间:2014-09-11 15:03:27

标签: php mysql mysqli

我刚将我的网页从mysql迁移到msqli。现在,删除数据令人困惑。这是我在Admin_Delete.php

中的代码
require 'Connect.php';
$id = intval($_GET['id']);
$query = "DELETE * FROM student_information WHERE student_id='$_GET[id]'";
// not using return value, and add some debug info
mysqli_query($query) or die(mysql_error().PHP_EOL.$query);
// let's see if anything actually happened...
$rowsDeleted = mysqli_affected_rows();
if($rowsDeleted == 0) {
    error_log("Nothing deleted for this query:".PHP_EOL.$query);
}
echo "<script language='javascript' type='text/javascript'>alert('$rowsDeleted row(s) deleted!')</script>";
echo "<script language='javascript' type='text/javascript'>window.open('Admin_Home.php','_self')</script>";
?>

这是我修复这些的配置。 Connect.php

<?php
$host = "localhost";
$dbusername = "root";
$dbpassword = "123456";
$dbname = "student";
$link_id = mysqli_connect($host,$dbusername,$dbpassword,$dbname) or die("Error " . mysqli_error($link_id)); 
?>

1 个答案:

答案 0 :(得分:1)

有几个问题。

mysql_error的引用应为 mysqli_error($link_id)

mysqli_query的引用应为 mysqli_query($link_id, $query)

mysqli_affected_rows的引用应为 mysqli_affected_rows($link_id)


此外,您已使用intval从$ _GET获取整数值,但您在SQL文本中使用了对$ _GET的引用。如果您不打算使用准备好的声明,那么您应该使用mysqli_real_escape_string函数来制作潜在的&#34;不安全的#34;价值观&#34;安全&#34;包含在SQL文本中。

$sql = " ... WHERE id='" . mysqli_real_escape_string($link_id, $id) . "'";

DELETE语句的语法不正确。省略*

DELETE FROM student_information WHERE ...

或者使用表格引用或表格别名

来限定*
DELETE s.* FROM student_information s WHERE ...