为了账号安全,请及时绑定邮箱和手机立即绑定

关于mysql_insert_id()的大疑惑


求助各位:我遇到一个十分费解的问题!

在mysql.func.php中我们有两段函数,其中一个是insert($table,$array),返回的是mysql_insert_id(),而后面我们又创建了一个函数getInsertId(),只有一个语句:return mysql_insert_id();    我于是觉得,前一个函数不是已经有后一函数的功能了吗?   但我发现其中有问题。发现还真不能用addAlbum()函数(以为insert返回mysql_insert_id)代替getInsertId(),但是为什么呢?  

function addAlbum($arr){
insert("imooc_album",$arr);
}

上面是addAlbum函数,

以下为问题代码,是pro.inc.php中的部分代码:

$res=insert("imooc_pro",$arr);
// $pid=getInsertId();
// echo $res.$pid;  调试用的,发现$res 和$pid的值一样,所以我就不用getInsertId()了
echo "immoc_pro:".$res."<br>";
//如果插入成功
if($res){  //省略了&&$pid 
    foreach($uploadFiles as $uploadFile){
        $arr1['pid']=$res;
        $arr1['albumPath']=$uploadFile['name'];
        print_r($arr1);
        echo "<br>";
        $affectedRow=addAlbum($arr1);
        // $affectedRow=getInsertId();  如果这样就可行,但像上面一行这样就不行,可他们返回的都是mysql_insert_id()
        echo "imooc_album:".$affectedRow."<br>";
        if($affectedRow){
            $mes="添加成功!<a href='addPro.php' target='mainFrame'>继续添加</a>";
        }else{
            $mes="addAlbum failed!";
        }
    }
}

在添加商品栏目添加一些信息和图片(内容随便打的),发现

这段函数输出的结果如下:

immoc_pro:30

Array ( [pid] => 30 [albumPath] => 00da9f030a4267855d0d705cc6d224cb.jpg ) 

insert into imooc_album (pid,albumPath) values('30','00da9f030a4267855d0d705cc6d224cb.jpg')

imooc_album:

Array ( [pid] => 30 [albumPath] => 76d357dfa1e1570ddd6d47785e980bd9.jpg ) 

insert into imooc_album (pid,albumPath) values('30','76d357dfa1e1570ddd6d47785e980bd9.jpg')

imooc_album:

Array ( [pid] => 30 [albumPath] => a4a6178694fa05aef62c233d296bde36.jpg ) 

insert into imooc_album (pid,albumPath) values('30','a4a6178694fa05aef62c233d296bde36.jpg')

imooc_album:

addAlbum failed!


我们发现imooc_pro有mysql_insert_id()返回的值而imooc_album却没有值。想了半天也没发现为什么!

其他一切都正常的,数据都插入表了,imooc_album里面也有pId和albumPath,没有问题。

求大神解惑!


正在回答

1 回答

小伙伴们,我自己找到原因了,分享一下吧:

其实很简单,但是容易忽略啊!是因为:

function addAlbum($arr){
    insert("imooc_album",$arr);
}

没有返回值,导致insert返回的mysql_insert_id()丢失了。

这样写就没有问题了:

function addAlbum($arr){    $res=insert("imooc_album",$arr);
    return $res;
}


2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117242    人
  • 解答问题       2101    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程

关于mysql_insert_id()的大疑惑

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号