我刚将我的网页从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));
?>
答案 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 ...