本人win8系统,带软件迈克菲。apache版本2.2.22,php版本5.4.3,mysql版本5.5.24的整合安装包,因为过年,所以我将之前完全没问题的代码压缩包后带回家中用新的电脑继续完善,然而却出...
本人win8系统,带软件迈克菲。apache版本2.2.22,php版本5.4.3,mysql版本5.5.24的整合安装包,因为过年,所以我将之前完全没问题的代码压缩包后带回家中用新的电脑继续完善,然而却出现了问题,我已经一步一步打印结果,直到$res = mysql_query($sql)都没问题,且我打印过$sql的语句直接在mysql里执行,也执行成功并返回affected rows有影响行数,然则在进行判断时,如果只有$res则返回成功,而加上mysql_affected_rows()则失败,但是失败情况下也已删除数据,我就想了,既然删除了数据那$res肯定已经执行成功,既然如此,那mysql_affected_rows()应该有值才对,为何会失败呢?
header('Content-type:text/html;charset=utf-8');
define('SQLIP','127.0.0.1');
define('SQLID','root');
define('SQLPASS','');
define('DBNAME','xm');
define('DACHARSET','utf8');
define('TOP','bbs_');
function connect(){
//连接数据库
$link = mysql_connect(SQLIP,SQLID,SQLPASS);
//判断连接是否成功
if(mysql_errno()){
echo '连接数据库失败'.mysql_error();
return false;
}
//选择数据库
mysql_select_db(DBNAME);
//设置字符集
mysql_set_charset(DBCHARSET);
return $link;
}
$link = connect();
//接收要删除数据的ID 即有getid也有postid 使用request来接收进行判断
$id = $_REQUEST['id'];
$mul = $_REQUEST['mul'];
// 如果是数组,则进行分割
if(is_array($id)){
$id = implode(',',$id);
}
// 如传过来是id=1,3,5,7的数组,分割后既是1,3,5,7的字符串
// 然后将其放在in()里,即可变成id in(1,3,5,7);也就是删除id为1,id为3.....的数据
// 如果不是数组则直接接收直接删除单个id
if($mul == 1){
$sql = "delete u,d from ".TOP."user u left join ".TOP."user_detail d on u.id=d.uid where u.id in({$id})";
}else{
$sql = "delete from ".TOP."user where id in({$id})";
}
// 执行删除
$res = mysql_query($sql);
//判断执行结果
if($res && mysql_affected_rows()){
echo '';
}else{
echo '';
}
//关闭资源
mysql_close($link);
?>
展开