【问题标题】:Delete not deleting the selected post but its deleting the recently(newels) added post删除不是删除选定的帖子,而是删除最近(newels)添加的帖子
【发布时间】:2015-11-02 01:56:03
【问题描述】:

我的Update.php 文件:

<?php ob_start();
 session_start();


//declare the basic variables
$servername = "localhost";
$username = "bilal";
$password = "super";
$dbname = "coursework";

 //create connection
 $link =  mysqli_connect($servername, $username, $password, $dbname);


//check connection
if($link->connect_error){
die ("connection failed: " . $link->connect_error);
}

//Security purpose, handiling escape string
  // $crested_by = $_POST ['created_by'];
  $title = $_POST['title'];
  $catagory = $_POST['catagory'];
  $contact = $_POST['contact'];
  $comment = $_POST ['description'];
   $ses = $_SESSION['email'];
  $date = date('Y-m-d');
  $availability = $_POST ['availability'];
  $price = $_POST ['price'];
  $id = $_POST['wow'];
 // $created_by_id = $_SESSION['created_by_id'];

 // $username = $_SESSION['firstname'];
 if (isset($_POST['del'])){
  $deletequery=mysqli_query($link,"DELETE FROM new_post WHERE id='$id'");
  header ("Location: added_posts.php");
   }

    else if(isset($_POST['update'])){

   $sql = "UPDATE new_post SET title='$title', contact='$contact',        availability='$availability', price='$price', comment='$comment' WHERE  id='$id'";
 if (mysqli_query($link, $sql)){
 echo "awesoke";
  header("Location:added_posts.php");
  }else{
   echo "Error: Sign up Unsuccessfull";
}  
}

$link->close();
 ?>

这是我的update.php 文件,我将内部的id 显示为textbox 以及id = the text field value 的操作。它正在删除,但最近添加的项目会删除,就像我有 3 个帖子 id 一样(4、5、6)id 先删除 6,然后是 5,然后是 4。我在引导卡中显示数据。但是 post 下的每个删除按钮都会删除最近添加的最新按钮。

【问题讨论】:

  • 在删除之前打印 $id 的值并检查您是否传递了正确的 ID 值。
  • 什么是$_POST['wow'],它是如何获得的?你真的需要在文本框中显示 id,它可以是隐藏的帖子字段,或者你可以通过 url 传递值
  • 我在文本字段中显示帖子的 ID 以确保它是正确的!以及 wow 中文本字段的名称。所以我将其添加为帖子并使其等于 id。但它仍然在删除最近的帖子。第 3 次然后如果我再按第 2 次,即使我想删除第 1 次并从第一张卡中单击删除,它也会删除第 3 次
  • 这是我的按钮:( )

标签: php html twitter-bootstrap


【解决方案1】:

所以您要删除数据库中的最新记录?

你的问题是 sql 语句 你有

"DELETE FROM new_post WHERE id='$id'"

这将删除 new_post 中的记录,其中 id 等于从您的表单中发布的 id。

您必须考虑到表中的最新条目将具有最大的 标识

所以使用这样的东西:

DELETE FROM new_post ORDER BY id DESC LIMIT 1

尝试 2:

您要根据 id 删除特定行吗?

为了安全,我建议你使用 prepared statements

首先试试这个:

$stmt = $link->prepare("DELETE FROM new_post WHERE id= ?");
$stmt->bind_param('i', $_POST['wow']); // can also use $id 
$stmt->execute(); 
$stmt->close();

【讨论】:

  • 不不不!!我只是想删除一个特定的记录。就像我制作了卡片一样,所有卡片都有详细信息,每张卡片都有删除按钮。但是,如果我从任何卡中按删除,则最近的帖子删除,然后如果我再次按,第二个最近的帖子将被删除。
  • 好吧,你需要确保你的帖子变量被正确分配,将它们回显出来,所以回显 $id
  • echo 完全正确!我在文本字段中显示 id,然后是我在查询中使用的文本字段的名称,例如 where id="the name of the text field"
  • 那么我发现您的查询“DELETE FROM table_name WHERE id='$id'”没有任何问题
  • 是的!是的,我做到了!这是我表单中的方法问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 2017-10-05
  • 2016-06-11
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多