php批量删除数据程序代码

 更新时间:2016年11月25日 16:35  点击:1599
我相信很多朋友还不知道如何来批量删除不要的数据,单使用php 批量删除数据我们需要结合mysql的in条件来实现了,这个估计大家看了这句话就明白如何做了,下面我就来给需要了解的朋友详细分析批量删除数据过程。

我们删除需要的sql语法

delete from aaaa where id in(1,2,3)这里面的1,2,3就是我们需要删除的记录了

那么在php中如何来做

1、首先在文章列表页面(list.php),将多选筐命名为:“$del_id[]”,值为文章ID号。
 例如(list.php):

 代码如下 复制代码

<form name="del_form" action="del.php" method="post">
<?php
$result=mysql_query("select * from news");
while($rs=mysql_fetch_array($result)){
 ?>
<input name="del_id[]" type="checkbox" id="del_id[]" value="<?=$rs[id]?>" /><?=$rs[title]?>
 <?php
}
 ?>
 </form>

2、处理页面(del.php):

<?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>");
}
?>

案例分析:

上面批量核心代码是 表单名为del_id[]与

 代码如下 复制代码

for($i=0;$i<$del_num;$i++){
 mysql_query("Delete from news where id='$del_id[$i]'");
}

这个就是获取提交过来的数组然后我们再遍历一条条删除了这个与我们最前面的说法更小一样,其实我们可以加地改进

 代码如下 复制代码

$ids = implode(',',$_POST['del_id']);
$sql ="delete from aaaa where id in($ids)";
mysql_query($Sql);


这样就可以简少很多的语句哦,当然上面需要判断提交过来的是不是数组了,最后我们对del.php文件进行代码优化删除操作

 代码如下 复制代码

<?php
 if(is_array($del_id)){
 
$ids = implode(',',$_POST['del_id']);
$sql ="delete from aaaa where id in($ids)";
 if( mysql_query($Sql))
{
echo '删除成功';
}
else
{
echo '删除失败';
}
}

 
}
?>

php连接mysql中文查询乱码问题解决非常的简单的,因为这个是我们文档编码与数据库编码不统一所导致的哦,解决办法有许多下面来给各位总结一下.


测试环境

mysql编码为uft-8
mysql版本为mysql5.X
php版本为php 5.X

解决办法

1.确保HTML代码中声明的charset值等于utf-8,代码如下

 代码如下 复制代码

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>


1:确认phpmyadmin用的mysql字符集为utf-8 unicode(utf8);mysql连接校对为utf8_general_ci,language为中文-chinese simplified

2:确认每个数据表的“整理为”utf8_general_ci;

3:在php连接mysql数据库后加个语句来指定数据库的字符集,

例如:

 代码如下 复制代码

$conn=mysql_connect("localhost","root","你的密码"); //连接数据库
mysql_query("set name 'utf8'");

如果上面解决不了我们可如下操作

 代码如下 复制代码

$link = mysql_connect('localhost','root','');
mysql_query("set character_set_connetion=utf8,character_set_result=utf8, character_set_client=binary",$link);

最后找到一个相对比较全面的解决办法

后来找到了解决方案,记录如下:

 代码如下 复制代码

 //尝试创建数据库表

mysql_select_db("courseTable",$con);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");


总结,关于mysql中文乱码我是找到很多的办法但最好发现网上很多解决mysql乱码都掉JB蛋的,真正的只要在查询连接时加上mysql_query("SET NAMES 'utf8'");就可以解决了。

在php中操作mysql数据库的方法有常用的三种,我们使用最多的估计是mysql或mysqli当然还有一个pdo_mysql了,下面整理了一些例子给各位参考

一.mysql数据库

 代码如下 复制代码

<?php
$conn=mysql_connect("localhost", "root", "123456") or die("数据库连接失败");
mysql_select_db("test") or die("选择数据库失败");;
$sql="select * from user";
$data=mysql_query($sql);
echo '<table border="1" align="center" width="800">'
while($row=mysql_fetch_assoc($result)){
echo '<tr>';
foreach($row as $col){
echo '<td>'.$col.'</td>';
}
echo '</tr>';
};
echo '</table>';
mysql_close();

补充

 代码如下 复制代码

 // 从表中提取信息的sql语句
$strsql="SELECT * FROM `gbook`";
// 执行sql查询
$result=mysql_db_query($mysql_database, $strsql, $conn);
// 获取查询结果
$row=mysql_fetch_row($result);

 
echo '<font face="verdana">';
echo '<table border="1" cellpadding="1" cellspacing="2">';

// 显示字段名称
echo "</b><tr></b>";
for ($i=0; $i<mysql_num_fields($result); $i++)
{
  echo '<td bgcolor="#000F00"><b>'.
  mysql_field_name($result, $i);
  echo "</b></td></b>";
}
echo "</tr></b>";
// 定位到第一条记录
mysql_data_seek($result, 0);
// 循环取出记录
while ($row=mysql_fetch_row($result))
{
  echo "<tr></b>";
  for ($i=0; $i<mysql_num_fields($result); $i++ )
  {
echo '<td bgcolor="#00FF00">';
echo $row[$i];
echo '</td>';
  }
  echo "</tr></b>";
}
  
echo "</table></b>";
echo "</font>";
// 释放资源
mysql_free_result($result);
// 关闭连接
mysql_close($conn); 

二.pdo_mysql(推荐)

连接:

 代码如下 复制代码


$dsn = "mysql:host=localhost;dbname=test";
$username = 'root';
$password = '123456';
$options = array(
   PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);

$pdo = new PDO($dsn, $username, $password, $options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
增:

方法1: 绑定关联数组

$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (:username,:password)");
$str->execute(array(":username"=>"test", ":password"=>"passwd"));

方法2: 绑定索引数组


$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (?,?)");
$str->execute(array("test", "passwd"));
删:


$str=$pdo->prepare("delete from user where id > 3");
$str->execute();

改:

$str=$pdo->prepare("UPDATE `user` SET username=:username,password=:password where id=:id");
$str->execute(array(":username"=>"test", ":password"=>"passwd", ":id"=>"3"));
查:
方法1: 单个取出,循环遍历,返回到数组

$str=$pdo->prepare("select * from user where id > :id  order by id");
$str->execute(array(":id"=>2));
$str->setFetchMode(PDO::FETCH_ASSOC);
//共三种:1.PDO::FETCH_BOTH(默认)  2.FETCH_ASSOC  3.FTECH_NUM
 
while($data=$str->fetch()){
print_r($data);
echo '<br>';
}

方法2: 全部取出,返回到二维数组


$str=$pdo->prepare("select * from user order by fid");
$str->execute();
$data=$str->fetchAll(PDO::FETCH_NUM);
print_r($data);

方法3:单个取出,循环遍历,绑定字段名到变量


$str=$pdo->prepare("select fid,username,password from user order by id");
$str->execute();
 
$str->bindColumn("id",$id);
$str->bindColumn("username",$username);
$str->bindColumn(3,$password);
 
while($str->fetch()){
echo "$id | $username | $password <br>";
}
echo "总记录数:".$str->rowCount()."<br>";
echo "总字段数:".$str->columnCount()."<br>";


二.mysqli

 代码如下 复制代码

(用mysqli链接MYSQL数据库)
requery_once("config.ini.php");
$mysqliObj = new mysqli($dbhost,$dbuser,$dbpwd,$dbname);
if(mysqli_connect_errno()){
 echo "连接失败".mysqli_connect_error();
 exit();
}
$mysqliObj->query("set name $charName");

(其他操作)
 
查询
-----------------------------------------------------
(单条查询)
$sql = "drop table  if exists user;";
$mysqliObj->query($sql);
 
(多条查询)
$musqliObj->multip_query($sql)
 
 
 
返回执行$sql受影响的行数()
----------------------------------------------------
if($mysqliObj->query($sql))
echo $mysqliObj->affected_rows;
 
insert 插入时,返回插入的id (很有用)
---------------------------------------------------
 $num = $mysqliObj->insert_id;

<?php
$mysqli=new mysqli("localhost", "root", "123456", "test");
$sql="select * from user  order by id";
$result=$mysqli->query($sql);
echo '<table align="center" border="1" width="800">';
while($row=$result->fetch_assoc()){
echo '<tr>';
foreach($row as $col){
echo '<td>'.$col.'</td>';
}
echo '</tr>';
}
echo '</table>';
$mysqli->close();


三种处理查询结果
-------------------------------------------------------
 

 代码如下 复制代码
$sql = "select * from user";
 $result = $mysqli->query($sql);
 
(1)fetch_row()   返回索引数组
fetch_row()
while(list($id,$name,$pwd)=$result->fetch_row()){
echo "id: ".$id." name:".$name."  pwd:".$pwd."<br>";
 
}
(2)fetch_assoc()  返回关联数组
fetch_assoc()
while ($row = $result->fetch_assoc()){
 echo "id:".$row["userId"]." name:".$row["userName"]."  pwd:".$row["password"]."<br>";
}
 
(3)fetch_object()返回对象
while($row = $result->fetch_object()){
echo "id:".$row->userId." name:".$row->uerName."  pwd:".$row->password."<br>";
 
}
Redis在性能上比mysql好点之外但在数据操作上的复杂度我们觉得非常的麻烦,像分页这种做法感觉非常不好使。

用上redis之后速度上去的结果就是操作数据的复杂性了、分页有种脱了裤子放屁的感觉。但是也没有别的办法。代码如下

 

 代码如下 复制代码

<?php
$redis = new Redis;
$redis->connect('127.0.0.1',6379,0);

//数据库
$host='********';
$user='root';
$psd='****';
$dbname='ask';

 


$link = mysql_connect($host,$user,$psd);
mysql_select_db($dbname,$link);
mysql_query("set names utf8");

 


$SQL = "SELECT * FROM question LIMIT 100";
$query = mysql_query($SQL);
$questionName = 'questionName';
while($info = mysql_fetch_array($query)){
$list[] = $info;
$redisName = 'Question_id_'.$info['id'];
$redis->hMset($redisName, $info);
$redis->zAdd($questionName,$info['id'],$info['id']);
$i++;
}
$range = $redis->zRevRange($questionName,0,10); //分页用到的主要函数
foreach($range as $qid){
$pageList[] = $redis->hGetAll('Question_id_'.$qid);
}
print_r($pageList);
?>

 
只是在做例子的时候随便敲敲、完全没有代码规范。请自己封装 基本用上的方法就是Reids的 hMset(),zAdd(), hGetAll(),zRevRange();如有不明白可以查看redis手册,或者与松林讨论。

php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接哦,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可。

记php支持oracle连接函数

php.ini文件中的配置,去掉  ;extention = php_oci8.dll,去掉前面的分号
重启apache就可以了,
如果不行,我们再把php目录中的php_oci8.dll拷到windows系统的system32下面去吧。
oracle数据库建立链接

 代码如下 复制代码

1.$conn = oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.100)(PORT = 1521))(CONNECT_DATA =(SID=test)))");

2.$conn = oci_connect('username','password','192.168.1.100/test');

3.Oracle 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

4.Oracle OLE DB 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中test是服务名。

 代码如下 复制代码

$sql = "select * from table_exmaple"
$ora_test = oci_parse($conn,$sql);  //编译sql语句
oci_execute($ora_test,OCI_DEFAULT);  //执行
while($r=oci_fetch_row($ora_test))  //取回结果
{
echo $ora_test[0];
echo "<BR>"; 
}

看个完整的例子

如果PHP版本>5.0,那么使用下面的函数

oci_connect ( username, password , dbname )

例子:

 代码如下 复制代码

<?php

$conn = oci_connect('hr', 'hr', 'orcl'); // 建立连接

if (!$conn) {

$e = oci_error();

print htmlentities($e['message']);

exit;

}

$query = 'SELECT * FROM DEPARTMENTS'; // 查询语句

$stid = oci_parse($conn, $query); // 配置SQL语句,准备执行

if (!$stid) {

$e = oci_error($conn);

print htmlentities($e['message']);

exit;

}

$r = oci_execute($stid, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit

if(!$r) {

$e = oci_error($stid);

echo htmlentities($e['message']);

exit;

}

// 打印执行结果

print '<table border="1">';

while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {

print '<tr>';

foreach($row as $item) {

print '<td>'.($item?htmlentities($item):' ').'</td>';

}

print '</tr>';

}

print '</table>';

oci_close($conn);

?>

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • 删除条目时弹出的确认对话框

    复制代码 代码如下: <td> <a href="/member/life/edit_ppt/<?php echo $v->id;?>" class="btn">编辑</a> <a href="javascript:;" onclick="if(confirm('您确定删除这条记录?')){location.href='/member/life/d...2014-06-07
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • jQuery动态添加与删除tr行实例代码

    最近由于项目的需要,需要动态的添加和删除table中的tr,感觉用JS可以实现,但是在网上找了一下,单纯的自己写JS,感觉太麻烦,而且也不好维护。于是想到了最近学的jQuery。这篇文章给大家用实例介绍了jQuery动态添加与删除tr行的方法,有需要的朋友们可以参考借鉴。...2016-10-20
  • php跨网站请求伪造与防止伪造方法

    伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。...2013-10-01
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • MyBatis-Plus的物理删除和逻辑删除(使用场景)

    数据库中的数据删除会分为两种:物理删除 和 逻辑删除,接下来通过本文给大家介绍MyBatis-Plus的物理删除和逻辑删除使用场景分析,感兴趣的朋友一起看看吧...2021-09-25
  • 微信小程序手势操作之单触摸点与多触摸点

    这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25