php 的$linkid,我是小白,谢谢老师解惑下,关于用mysqli_insert_id($link);得到的值是0的问题!...

在mysql.func.php中构造了下面的函数:

function insert($table,$array){

$link=connect();

$keys=join(",",array_keys($array));

$vals="'".join("','",array_values($array))."'";

$sql="insert {$table}($keys) values({$vals})";

mysqli_query($link,$sql);

return mysqli_insert_id($link);

}

function getInsertId(){

$link=connect();

return mysqli_insert_id($link);

}

在pro.func.php中调用

$res = insert ( "imooc_pro", $arr );

打印出来值却不为0.

$pid = getInsertId ();

打印出来值为0.

于是不解,百度之

The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero.

英语不好,只好大概知道:

mysqli_insert_id() 函数通过查询一个含有AUTO_INCREMENT属性列的表返回一个ID值,如果最后一条查询不是INSERT或者UPDATE操作或者修改的表中不含有AUTO_INCREMEN属性的列,那么这个函数就会返回0.

呃,不知道是不是这个意思.

如果是这个意思,那么在调用getInsertId()函数前,我已经调用了insert ( "imooc_pro", $arr ),应该没问题啊.但就是值就是为0.

后来我想了想,在封装getInsertId()时,我又调用了$link=connect();连接数据库的函数,是这个原因导致的吗?但如果我不调用$link=connect(),我也没办法使用mysqli_insert_id($link)函数.所以这个getInsertId()函数用mysqli_insert_id($link)函数如何能单独进行封装?

然后觉得$pid的值和$res应该是一样的,老师做这两个值的判断if ($res&&$pid)的用意是什么啊?能不就if($res),呃,实际上用这个是可以跑通的~~

呃,然后就是想问问,数据库连接好了,用了之后,是不是一定要关闭数据库,还是说一直可以连接?是不是一会儿连接数据库,一会儿关闭数据库.会Mysql数据库的性能有影响?

我是小白,谢谢老师解惑下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
if(!function_exists('mysql_pconnect')){ function mysql_pconnect($dbhost, $dbuser, $dbpass){ global $dbport; global $dbname; global $linkid; $linkid = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); return $linkid; } function mysql_select_db($dbname){ global $linkid; return mysqli_select_db($linkid,$dbname); } function mysql_fetch_array($result, $type=''){ if ($type) { return mysqli_fetch_array($result, $type); }else{ return mysqli_fetch_array($result); } } function mysql_fetch_assoc($result){ return mysqli_fetch_assoc($result); } function mysql_fetch_row($result){ return mysqli_fetch_row($result); } function mysql_free_result($result){ return mysqli_free_result($result); } function mysql_query($cxn){ global $linkid; return mysqli_query($linkid,$cxn); } function mysql_insert_id(){ global $linkid; return mysqli_insert_id($linkid); } function mysql_affected_rows(){ global $linkid; return mysqli_affected_rows($linkid); } function mysql_escape_string($data){ global $linkid; return mysqli_real_escape_string($linkid, $data); } function mysql_real_escape_string($data){ global $linkid; return mysqli_real_escape_string($linkid, $data); } function mysql_close(){ global $linkid; return mysqli_close($linkid); } function mysql_get_server_info(){ global $linkid; return mysqli_get_server_info($linkid); } function mysql_num_rows($result){ return mysqli_num_rows($result); } } error_reporting(E_ERROR | E_PARSE); error_reporting(E_ALL ^ E_WARNING); error_reporting(E_ALL & ~E_NOTICE); error_reporting(E_ALL ^ E_DEPRECATED);给代码加上注释
最新发布
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值