php - php中删除的未定义索引
问题描述
我还是 php 的新手(昨天才开始),当我想删除我的数据时,它会说这个
通知:未定义索引:第 13 行 C:\wamp64\www\HelpingClass\delete.php 中的书名
通知:未定义索引:第 14 行 C:\wamp64\www\HelpingClass\delete.php 中的数量
注意:未定义索引:第 15 行 C:\wamp64\www\HelpingClass\delete.php 中的价格
这是我第 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>";
}
?>
我真的很感谢你的帮助
解决方案
您的代码中有很多问题。
参数化版本的示例可能是:
// 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
查询语句语法错误。你不能使用*
andSET
。另外,对(假设它是整数)进行(int)
类型转换。使用函数时,查询字符串中$bookid
也不需要分号 ( )。;
mysqli_query
它应该如下:
$query = mysqli_query ($conn, "DELETE FROM book
WHERE Book_Id = '" . (int)$bookid . "'");
从MySQL Documentation,DELETE
语句的语法如下:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
推荐阅读
- python - 使用 Python 脚本将视频上传到 Django 模型文件字段
- swift - 从情节提要转至 .xib
- php - MySQL 在顶部选择特色项目
- dns - 如何获取 Pi-hole 以减少 DNS 查询时间
- reactjs - 无法在尚未安装错误的组件上设置状态
- node.js - 在 MERN 堆栈 Web 应用程序中存储图像的最佳方式
- java - 运行 JUnit 测试时,ByteBuddy AgentBuilder 不工作
- visual-studio - 在 excel vb 2019 中着色,使单元格样式正常并合并特定范围
- git - 如何防止“git pull”删除本地文件
- python - How get a dictionary dynamically?