当前位置: 首页 > 知识库问答 >
问题:

php中用于删除的未定义索引[重复]

冉绯辞
2023-03-14

我仍然是PHP的新手(昨天刚开始),当我想删除我的数据时,它说:
注意:未定义的索引:第13行C:\wamp64\www\HelpingClass\delete.php中的书名
注意:未定义的索引:C中的数量:##################################################################################################################################################

这是我第13、14、15行的代码

$bookname = $_POST['bookname'];
$quantity = $_POST['quantity'];
$price = $_POST['price'];

我甚至试着把13,14,15行改成这个

    if(isset($_POST['bookname']) && isset($_POST['bookname'])){
    echo $_POST['bookname'];
}
    if(isset($_POST['quantity']) && isset($_POST['quantity'])){
    echo $_POST['quantity'];
}
    if(isset($_POST['price']) && isset($_POST['price'])){
    echo $_POST['price'];}

通知未定义的索引不见了,但我仍然不能删除数据:(

这是我的完整代码delete.php

<?php
    include ('connection.php');
    session_start();
    if (!isset($_SESSION ['userid'])&& empty($_SESSION['userid'])){
        header ("location:login.php");
        exit;
    }
    else {
        $userid = $_SESSION ['userid'];
    }

    $bookid = $_GET['bookid'];
    $bookname = $_POST['bookname'];
    $quantity = $_POST['quantity'];
    $price = $_POST['price'];

    $query = mysqli_query ($conn, "DELETE FROM book SET WHERE Book_Id='$bookid';");

    if ($query == TRUE)
        {
            echo "<script language='javascript'>";
            echo "alert('Deleted.');";
            echo "window.location.href='action.php';";
            echo "</script>";
        }
        else
        {
            echo "<script language='javascript'>";
            echo "alert('Delete Failed.');";
            //echo "window.location.href='action.php';";
            echo "</script>";
        }


 ?>

我真的很感激你的帮助

共有1个答案

斜高翰
2023-03-14

代码中有很多问题。

  • 最重要的是,您的数据库查询SQL注入相关问题。请使用准备好的语句。

参数化版本的示例可以是:

// prepare the query statement
$stmt = $mysqli_prepare($conn, "DELETE FROM book 
                                WHERE Book_Id = ?");
// bind the parameters
$stmt->bind_param("i", $bookid);
// execute the query
$stmt->execute();
//fetching result would go here (in case of SELECT queries)
$stmt->close();
  • 其次,检查变量是否存在,使用isset函数。您可以在旁边使用三元运算符。

如:

$bookid = isset($_GET['bookid']) ? $_GET['bookid'] : 0;
$bookname = isset($_POST['bookname']) ? $_POST['bookname'] : '';
$quantity = isset($_POST['quantity']) ? $_POST['quantity'] : 0;
$price = isset($_POST['price']) ? $_POST['price'] : 0;
  • 第三,您的DELETE查询语句语法错误。不能使用*设置。另外,在$bookid上执行(int)类型转换(假设此处为整数)。使用mysqli\u query函数时,查询字符串中也不需要分号(

其内容应如下:

$query = mysqli_query ($conn, "DELETE FROM book 
                               WHERE Book_Id = '" . (int)$bookid . "'");

从MySQL文档中,DELETE语句的语法如下:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

 类似资料:
  • 问题内容: 这听起来真的很愚蠢,但我无法弄清楚为什么会收到此错误。 我创建了一个选择框,以我的html形式命名为“ query_age”: 在相应的php形式中,我有: 运行页面时,出现此错误: 注意:未定义的索引:第19行的index.php中的query_age 我不明白为什么会这样,我很想知道如何解决它。 问题答案: 我没有看到php文件,但是可能就是这样- 在您的php文件中替换: 与:

  • 我被卡住了一段时间,无法弄清楚如何修复此代码

  • 问题内容: 当我尝试在其他PHP服务器上运行脚本时,出现了一个新问题。 在我的旧服务器上,即使未声明任何参数,以下代码也可以正常工作。 但是现在,在本地计算机(XAMPP-Apache)上的本地服务器上,如果未定义for的值,则会出现以下错误。 如果为声明了值,但脚本要调用某些javascript函数会发生什么,但是如果未声明任何内容,我希望页面能够正常加载。 你能帮助我吗? 问题答案: 错误报告

  • 问题内容: 我是PHP的新手,并且在会话方面更是初学者。我有index.php页面,用户可以在其中注册和登录。表单分别发布到validate.php和loginvalidate.php页面,以进行注册和登录。 加载时在index.php上出现以下错误: 1)注意:未定义的索引:已注册2)注意:未定义的索引:从未使用 我已经尝试过多种方式来修改我的文字,但是我从来没有解决错误。 Index.php

  • 我已经检查了register_argc_argv是否在我的php.ini文件中打开,我正在使用PHP-CLI。 这是我得到的错误消息: PHP致命错误:未捕获异常“ErrorException”,消息为“Undefined index:argv”phar:///var/www/html/composer.phar/vendor/symfony/console/Symfony/Component/C

  • 我得到未定义的索引错误。我在同一个网站上看到了一个类似类型的问题。我无法修复这个错误,有人能帮助我吗