关于mysql_insert_id()的问题,为什么返回的值是0

两张表,表title(titleid,title,auth)表content(id,titleid,content),表content的titleid外键于表title的... 两张表,表title(titleid,title,auth)表content(id,titleid,content),表content的titleid外键于表title的titleid,表title的titleid是主键。

$conn = db_connect(); //这步连接没问题;
$result = $conn->query("INSERT INTO title VALUES ('','".$title."','".$_SESSION['valid_username']."')"); //插入数据
echo $lastid = mysql_insert_id(); //这里返回的就是 0
$result2 = $conn->query("INSERT INTO content VALUES ('','".$lastid."','".$content."')");

请问是哪里出错了呢……我想插入标题到title表,插入内容到content表,然后两表的titleid自动对应

表title的titleid是自增的
展开
 我来答
maxlwc
推荐于2018-02-28 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:150万
展开全部
你可以在建表的时候,将id的字段设置为自增。然后将下面的语句
$result = $conn->query("INSERT INTO title VALUES ('','".$title."','".$_SESSION['valid_username']."')");
改为:
$result = $conn->query("INSERT INTO title (title,auth) VALUES ('".$title."','".$_SESSION['valid_username']."')");
同样,
$result2 = $conn->query("INSERT INTO content VALUES ('','".$lastid."','".$content."')");
也改为:
$result2 = $conn->query("INSERT INTO content (titleid,content) VALUES ('".$lastid."','".$content."')");
有问题你可以继续追问,或者加我百度hi好友,我一般都在线。希望能帮到你。
追问
谢谢你,不过改了还是没有用呢,数据只能插入表title,虽然titleid显示30,但是还是返回0,并且表content没反应,难道要把titleid改成id?这应该不相干吧……

可不可能是mysqli的缘故,刚才我为了循环显示数据,用mysql_fetch_array($result)提示mysql_fetch_array() expects parameter 1 to be resource, object given in,只能用$result->fetch_array()…………
追答
把mysql_insert_id();改成$conn->insert_id
一诺千金丨
2016-01-06 · 知道合伙人数码行家
一诺千金丨
知道合伙人数码行家
采纳数:8766 获赞数:32844
1、专业生产电力检测设备,若要咨询相关直接向我咨询关于电力检测设备的问题吧。 2、武高电测最佳员工。

向TA提问 私信TA
展开全部
  1. mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID。
    如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0。

  2. 使用了DELAYED关键字。使用这个关键字后,执行插入语句时不会立即插入,而是会进入一个队列。数据库会在后台依次处理这个队列里的内容。所以SQL语句执行完毕后,由于数据未插入,就得不到最后插入的ID。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式