• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> PHP 开发 >> PHP&MYSQL >> 详细内容
 

推荐文章

  • 通过MySQL内置全文检索实现中文的相关检索
 
 

热点文章

  • MySQL Error Code文档手册---摘自MySQL官方网站
  • 通过MySQL内置全文检索实现中文的相关检索
  • PHP连接MySQL出现乱码的一些个人看法
  • PHP,MYSQL常见问题与解答
  • MySQL中修改密码及访问限制设置详解
  • PHP脚本数据库功能详解
  • 多条件查询
  • 对MYSQL进行全文检索的PHP类库
  • 默默小谈PHP&MYSQL分页原理及实现
  • MySQL修改密码方法总结
  • Adodb 入门教程
  • Adodb官方介绍
 
 

相关文章

  • PHP初级程序员面试题及答案
  • PHP使用zlib扩展实现页面GZIP压缩输出
  • 为什么PHP令人不爽(对于大型系统)
  • php中的stdClass
  • php中ADODB类使用
  • php自动post数据--百度贴吧灌水机器人代码实例
  • Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
  • php取不到session的常见原因
  • 使用php的zlib压缩和解压缩swf文件
  • php 做服务器端程序
  • PHP5.2下function和class性能对比
  • PHP用mkdir()新建立目录无写的权限的问题
 
 

百度搜索

 
 

mysql的bigint类型与php的mysql_insert_id函数造成的bug

  • 阅览次数:
  • 文章来源: CP整理
  • 原文作者:
  • 整理日期: 2008-08-14
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

discuz做二次开发,有个bug让我头疼了2天。
由于数据的需要把post表中的pid改为bigint(20)
可是用$db->insert_id()取出来的不是刚刚插入的pid值,导致附件找不到对应的帖子

找了2天原因,后来在php手册看到:

mysql_insert_id() 将 MySQL 内部的 C API 函数 mysql_insert_id() 的返回值转换成 long(PHP 中命名为 int)。如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。

于是将db类里的 insert_id 做以下修改

PHP:  

<?php
function insert_id() {
        
//return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
        
return $this->result($this->query("SELECT last_insert_id()"), 0);   //在bigint下使用这个语句,mysql手册中说SELECT last_insert_id()是多用户安全的
    
}
?>

问题解决

上一篇:PayPal全中文详解
下一篇:PHP初级程序员面试题及答案
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号