thinkphp5数据库怎么批量删除
创新互联建站是一家专业的成都网站建设公司,我们专注成都网站制作、做网站、网络营销、企业网站建设,外链,一元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
// 以下方法供参考
$id = 3;
// 1、如果id是主键,且Mysql数据库
$new -delete($id);
// 2、用表示筛选条件的数组$map
$map["id"]=$id;
$new -where($map)-delete();
// 3、如果id是主键
$new -delete($map);
// 4、直接用数组
$new -where(array("id"=$id))-delete();
// 5、删除多条1,3,5,6,8
$ids = array(1,3,5,6,8);
$maps["id"] = array("in",$ids); // 或者 $maps["id"] = array("in","1,3,5,6,8");
$new -where($maps)-delete();
sample code:
?php
if($del_id!=""){
$del_num=count($del_id);
for($i=0;$i$del_num;$i++){
mysql_query("Delete from news where id='$del_id[$i]'");
}
echo("script type='text/javascript'alert('删除成功!');history.back();/script");
}else{
echo("script type='text/javascript'alert('请先选择项目!');history.back();/script");
}
?
1.前台
!DOCTYPE html
html
head
title批量删除/title
/head
body
scripttype="text/javascript"
//复选框
function checkall(all)
{
var ck = document.getElementsByClassName("ck");
if(all.checked)
{
for(var i=0;ick.length;i++)
{
ck[i].setAttribute("checked","checked");
}
}
else
{
for(vari=0;ick.length;i++)
{
ck[i].removeAttribute("checked");
}
}
}
/script
formaction="test.php"method="post"
tableborder="1"
trthinputtype="checkbox"name="all"onclick="checkall(this)"/id/thth名字/th/tr
!-- 此处调用显示列表函数 --
?phpshow() ?
trtdcolspan="3"inputtype="submit"value="批量删除"/td/tr
/table
/form
/body
?php
//显示列表
function show()
{
//连接数据库
@mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query('set names utf8');
$sql="select id,name from test";
$res=mysql_query($sql);
//循环取出数据
while($row=mysql_fetch_row($res))
{
echo "tr
td
inputtype='checkbox'value='{$row[0]}'name='item[]'class='ck'/
{$row[0]}
/td
td{$row[1]}/td
/tr";
}
}
?
/html
2.后台
?php
//接收post传来的数组
$arr=$_POST["item"];
/**
* 批量删除
* 思路:把前台批量选择的数据放在数组里,删除该数组即可
* @param $arr
* @return $res 成功or失败
*/
functionbatch_del($arr)
{
@mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query('set names utf8');
//把数组元素组合为字符串:
$str= implode("','",$arr);
//in 表示多个
$sql="delete from test where id in('{$str}')";
$res= mysql_query($sql);
if(!$res){
echo"删除失败";
}else{
if(mysql_affected_rows()0){
echo"删除成功";
}else{
echo"没有行受到影响";
}
}
}
//调用批量删除函数
batch_del($arr);
SCRIPT LANGUAGE="JavaScript"
!--
function quan()
{
if(document.getElementsByName("qx[]")[0].checked==false)
{
for(var i=0;idocument.getElementsByName("quanxuan[]").length;i++)
{
document.getElementsByName("quanxuan[]")[i].checked=false;
}
}
if(document.getElementsByName("qx[]")[0].checked)
{
for(var i=0;idocument.getElementsByName("quanxuan[]").length;i++)
{
document.getElementsByName("quanxuan[]")[i].checked=true;
}
}
}
//--
function xuan()
{
var a=new Array();
var i;
var c=0;
for(i=0;idocument.getElementsByName("quanxuan[]").length;i++)
{
if(document.getElementsByName("quanxuan[]")[i].checked)
{
a[c]=document.getElementsByName("quanxuan[]")[i].value;
c++;
/*alert(a);*/
}
}
if(a.length==0)
{
alert("请选择");
}
else
{
var ss=confirm("确定删除?");
if(ss==true)
{
location.href="shanchu.php?id="+a;
}
}
}
/SCRIPT
input type="checkbox" name="qx[]" onclick="quan();"font size="2"全选/font
a href="javascript:xuan()"选择删除/a
TABLE
TR
TD INPUT TYPE="checkbox" NAME="quanxuan[]" value="1"/TD
TDa/TD
/TR
TR
TD INPUT TYPE="checkbox" NAME="quanxuan[]" value="2"/TD
TDb/TD
/TR
TR
TD INPUT TYPE="checkbox" NAME="quanxuan[]" value="3"/TD
TDc/TD
/TR
TR
TD INPUT TYPE="checkbox" NAME="quanxuan[]" value="4"/TD
TDd/TD
/TR
TR
TD INPUT TYPE="checkbox" NAME="quanxuan[]" value="5"/TD
TDe/TD
/TR
/TABLE
传值以后 在PHP页 接值 $zhi=$_GET["a"]; 然后把 $zhi 拆分成数组
$zhi=explode(',',$zhi);
在循环删除就可以
for($i=0;$icount($idd);$i++)
{
$con-query("delete from 表名 where ajbg_bh='$zhi[$i]'");
}
?php
//先构造SQL语句
$SQL="DELETE FROM a WHERE b='123'";//删除a表中所有b字段值为123的记录
$ALL="DELETE FROM a";//删除a表中所有记录
$ALL2="TRUNCATE a";//删除a表中所有记录,(推荐使用)
//使用mysql_query命令执行SQL语句,如:
mysql_query($SQL);
问题很大,
首先,act==delAll是怎么来的?还有$id=implode('ID')这也是错误的,$id的值是怎么来的?何况implode()函数是将字符串打散为数组,他有2个参数,第一个是标记符(也就是按照什么来打散数组),第二个是要打散的字符串。
其实,你复选框有多个,那就要用for循环依次获取他的值,拼接成一个字符串。
给你一个我做是实例,你按照这个参考一下:
?php
include_once 'include/confing.php';//引入数据库操作类
$alldel=$date-ps('alldel');//post方式获得隐藏域alldel的值
if($date-is($alldel)){//如果alldel的值为真(依次来判断表单是否提交,因为我这php逻辑代码和html是在同一个页面,判断一下有必要)
$ids='';//初始$ids的值为空
for($i=0;$icount($_POST['checks']);$i++){//根据页面有多少个复选框进行for循环
$s=$_POST['checks'][$i];//依次取得复选框的值
$ids.=$s.',';//拼接成字符串并在后面加上一个英文半角的逗号
}
$ids=substr($ids,0,strlen($ids)-1);//因为拼接出来的字符串,最后会多出一个逗号,所以用substr函数将他去掉
$del_sql="Delete from websehzhi where tid in ($ids)";//构建sql删除语句
if($date-del_query($del_sql)){//如果sql语句执行成功
$date-msmdurl('成功删除选中记录','?page='.$date-gt('page'));//成功提示并跳转到指定url
}else{//否则
$date-msmdurl('删除失败,您未选中要删除的记录','?page='.$date-gt('page'//失败提示并跳转到指定url));
}
}
?
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
title批量删除/title
/head
body
form method="post" name="form" id="form"
input type="checkbox" name="checks[]" value="35" /这是第十条数据br/
input type="checkbox" name="checks[]" value="34" /这是第九条数据br/
input type="checkbox" name="checks[]" value="33" /这是第八条数据br/
input type="checkbox" name="checks[]" value="32" /这是第七条数据br/
input type="checkbox" name="checks[]" value="31" /这是第六条数据br/
input type="checkbox" name="checks[]" value="30" /这是第五条数据br/
input type="checkbox" name="checks[]" value="29" /这是第四条数据br/
input type="checkbox" name="checks[]" value="28" /这是第三条数据br/
input type="checkbox" name="checks[]" value="27" /这是第二条数据br/
input type="checkbox" name="checks[]" value="26" /这是第一条数据br/
input type="hidden" name="alldel" value="1" /
button type="submit"批量删除/button
/form
/body
/html
我这里是使用了面对对象,你不要管我的类对象代码,反正原理都差不多!
你也可以使用面对过程,都差不多!