【问题标题】:How to delete data from MySQL using a php page?如何使用 php 页面从 MySQL 中删除数据?
【发布时间】:2014-12-11 22:10:29
【问题描述】:

我正在创建一个包含 2 个部分的测验网站,1 个用于用户,1 个用于管理员。管理员部分是管理员可以查看、添加、编辑或删除问题的地方。我有这个删除命令,我已将它链接到表中的“删除”选项,但它不起作用。这是我的代码:

<?php

include 'connect.php';

    mysqli_query("DELETE FROM tblAssignment2 WHERE question_id = $_GET[question]") or die(mysqli_error());
    echo "Question has been deleted!";
    header('location: admin.php');

?>

【问题讨论】:

  • “不起作用”是什么意思?你有没有看到任何错误?你能告诉我们这些错误是什么吗?在您打开 &lt;?php 标记 error_reporting(E_ALL); ini_set('display_errors', 1); 后立即在文件顶部添加错误报告
  • 对sql注入开放
  • 你需要把$_GET[question]改成$_GET['question']
  • 旁注:or die(mysqli_error($con)) - php.net/manual/en/mysqli.error.php string mysqli_error ( mysqli $link )
  • 哎呀哎呀哎呀!我当然希望没有人将“0 OR 1=1”作为问题传递!

标签: php mysql command


【解决方案1】:
<?php

include 'connect.php';
$_GET['question'] = mysqli_real_escape_string($connection, $_GET['question']);
mysqli_query($connection, "DELETE FROM tblAssignment2 WHERE question_id = '".$_GET['question']."'") or die(mysqli_error($connection));
//echo "Question has been deleted!"; // You don't need to echo because it will throw an error. With output buffering it wouldn't be displayed on the page.
header('location: admin.php');
exit(); // Exit.

?>

【讨论】:

  • 我不喜欢 $_GET['question'] 仍然未转义,但我很高兴你解决了 echo 声明
  • 通常它不会在我的代码中转义,我总是首先在 foreach 中处理 $_GET / $_POST 的东西,我对此很满意。我也可以随时取消它们。
  • 警告:mysqli_query() 需要至少 2 个参数,1 在 /home/cata15/public_html/assignment2/delete.php 第 5 行给出 警告:mysqli_error() 需要 1 个参数,0 在/home/cata15/public_html/assignment2/delete.php 在第 5 行 - 这是错误
  • 啊,您使用的是程序样式。我忘记了链接。更新现在应该可以工作了。
  • php.net/manual/en/mysqli.query.php 了解有关 mysqli 功能和用法的更多详细信息。在提出基本问题之前,您应该阅读文档。
【解决方案2】:

如果您想删除 WHERE question_id,那么您需要确保 $_GET 正在删除要删除的 question_id 而不是问题

【讨论】:

    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多