关于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,没有问题。
求大神解惑!