倘若我们把ecshop商品列表的数据改到特别大的时候,奇迹就来了,你会发现这个商品无论如何在前台也无法显示出来。
首先后台执行一个SQL 语句
UPDATE ecs_goods SET goods_id = 320212323146545 WHERE goods_id =32;
会发现你修改之后列表显示的最大数也就是 16777215 这个了,假若你要更变态咋整呢。
编辑表结构。goods_id
ALTER TABLE CHANGE goods_id goods_id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
此时,你再去设置这个数你会发现。商品列表的序列ID就是你设置的。但是此时你再想预览这个商品那是不可能的。不信你试试,当你尝试过后,怎么发现 直接转到首页了,啥原因所致,这个应该是取值不到,自动返回一个默认值,所以在数据库查不到,自然就回到首页了。ECSHOP 就这样的。
那么我们执意要用这么变态的ID 那应该怎么做呢?//www.zuimoban.com
打开 站点 根目录下的 goods.php 文件
找到这段
$goods_id = isset($_REQUEST[‘id’]) ? intval($_REQUEST[‘id’]) : 0;
修改成如下:
$goods_id = isset($_REQUEST['id']) ? trim(($_REQUEST['id'])) : 0;
然后清除一下缓存,再次打开看看,是不是可以打开了。
mysql bigint取值范围:与操作系统无关,为-9223372036854775808到9223372036854775807,无符号为0到18446744073709551615。
当你再一次大于这个18446744073709551615时候,我估计又会有新的解决办法。介于此问题大概就这样。
新闻热点
疑难解答