请大侠们帮我看看这个问题出在哪?
Item Detail
|
我不想误导大家, 但我自己的分析,认为问题出在 94-149行之间的这段php代码上。
IMAGES的表里存储的是BLOB图片,IMG_ID我设置的是自动增长的,IMG_ID为1的图片是默认的错误信息图。
每当我插入一张新的图片,名为IMAGES里面会有新的图片插入,并自动生成IMG_ID,ITEM里面的IMG_ID无法自动更新(详情见121行), 135-147行代码也是相同的问题,如果成功删除图片,无法将IMG_ID改回1。
我已经做了实验,print $item_id的值,发现$item_id的值是没有问题的。另外table的拼写也无错误。。。
难道是什么地方不小心把table lock了,而且没有unlock?可是即使lock了,我自己应该还是有权限修改的不是吗?小弟百思不得其解
麻烦各位大神帮小弟分析一下原因,小弟感激不尽
回复讨论(解决方案)
自增长id应该是不会回退的吧?
自增长id应该是不会回退的吧?
谢谢你。可以解释的详细点吗? 问题该怎么解决呢?
$pic_id = mysql_insert_id();
mysql_query("UPDATE ITEM SET IMG_ID = $pic_id WHERE ITEM_ID = $item_id");
既然 IMG_ID 是自动增长的, 那么 IMG_ID 就是主键了
主键是不可重复的!
SET IMG_ID = $pic_id 就有重复的嫌疑
至少在你的代码中没有看到对 ITEM_ID 赋值的代码
而有
$item_id = $_SESSION['eidt_item_id'];
但是也没有看到 session_start();
虽说 ITEM_ID 可能有初值,但 $item_id 为空的话将造成 SQL 指令为
UPDATE ITEM SET IMG_ID = nnnn WHERE ITEM_ID =
显然是错误的
估计是列名弄混了
斑竹 火眼金睛~
$pic_id = mysql_insert_id();
mysql_query("UPDATE ITEM SET IMG_ID = $pic_id WHERE ITEM_ID = $item_id");
既然 IMG_ID 是自动增长的, 那么 IMG_ID 就是主键了
主键是不可重复的!
SET IMG_ID = $pic_id 就有重复的嫌疑
至少在你的代码中没有看到对 ITEM_ID 赋值的代码
而有
$item_id = $_SESSION['eidt_item_id'];
但是也没有看到 session_start();
虽说 ITEM_ID 可能有初值,但 $item_id 为空的话将造成 SQL 指令为
UPDATE ITEM SET IMG_ID = nnnn WHERE ITEM_ID =
显然是错误的
估计是列名弄混了
谢谢版主大神
我解释一下我的构思
因为我想换了图片以后,立即显示出来,所以加了以下语句
header("location: " . $_SERVER['REQUEST_URI']);
但加入之后会有个问题。一旦点击换图按钮,页面就会自动刷新,刷新会导致我会丢失item_id
if(isset($_POST['submit_edit_item_id'])) { $_SESSION['edit_item_id'] = $_POST['sub_edit_item_id']; } $item_id = $_SESSION['edit_item_id'];
所以把item_id存在了SESSION['edit_item_id']里,如果item_id不是之前网页传递过来的,就直接读取存在session里的item_id,方便刷新页面以后继续使用。 至于session_start()我放在了header.php里,抱歉我没有做相关的说明。
小弟刚学网页不久,也不知道这种思路是不是正确。话说item_id,我去检查一下,是不是为空。。。
$pic_id = mysql_insert_id();
mysql_query("UPDATE ITEM SET IMG_ID = $pic_id WHERE ITEM_ID = $item_id");
既然 IMG_ID 是自动增长的, 那么 IMG_ID 就是主键了
主键是不可重复的!
SET IMG_ID = $pic_id 就有重复的嫌疑
至少在你的代码中没有看到对 ITEM_ID 赋值的代码
而有
$item_id = $_SESSION['eidt_item_id'];
但是也没有看到 session_start();
虽说 ITEM_ID 可能有初值,但 $item_id 为空的话将造成 SQL 指令为
UPDATE ITEM SET IMG_ID = nnnn WHERE ITEM_ID =
显然是错误的
估计是列名弄混了
img_id在IMAGES里确实是主键,但在ITEM表里也有一个,不是主键。
我做了下测试,如果我删除图片,ITEM表里的img_id就会变成1,即为默认图片。如果我再换图片,没有新的图片插入进去,相对的img_id会变成0。。。可能是应为没有插进去图片,所以mysql_insert_id()返回的值为0吧?
为了以防万一,我在mysql里测试了一下insert语句,发现没有语法问题啊。。。 为什么会这样啊。。。 要抓狂了。。。
对代码稍微做了点修改。。。之前还能插入图片。。。
Item Detail
|
上一篇: 在discuz里使用数据缓存