//插入NID和名字
$mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
//获取插入的ID
$c = $mysqli->insert_id;
//在插入内容
$mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
//更新列表
$mysqli->query("update xClass set Nid='$chaRuZjId'");
上边的,不知道怎么测试了。
第一次插入是可以的。
第二插入内容的话则不可以了。
更新列表是可以的。但有时是可以全部执行。
有时只有第二次插入不成功,其他可以。也就突然间的事情,发生了4-5天了才发现,也不知道环境出问题了,还是那出问题了。

解决方案 »

  1.   

    你怎么就确认$mysqli->insert_id就一定是对的呢?
      

  2.   


    不对?获取上一次插入的ID。如果不可以的,但它有时又可以第二次插入?
    除开这样,还有其他的办法获取上一次的ID?或者说,修正为1条语句来插入?
      

  3.   

    你再次插入时使用了上次插入时的id,那么 id 不就重复了吗?
      

  4.   

    echo $mysqli->error; 看看
      

  5.   


    是怕$c 获取不出来上一次插入的ID?
      

  6.   


    是怕$c 获取不出来上一次插入的ID?
      

  7.   

    那句是输出最近一次执行sql的的错误信息
      

  8.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
      

  9.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
      

  10.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    你说有可能是不是MYSQL 连接数过大?
      

  11.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?
      

  12.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
      

  13.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊
      

  14.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?
      

  15.   

    没有机会无法获取你要相信没有灵异事件 一定是自己哪里写错了  你把每次$c打印出来 再用数据库管理软件去里边看看到底是否真的插进去了在此之前想别的意义并不大.你看这个帖子里你的回复  一直在做出各种猜测,我该说这是思维敏捷还是眼高手低?  哪里出错就把哪里显示出来看看这是最基本的今天一个同事问我问啥我用某某方式获得的字符串和另一个方式获得字符串总是不相等呢?它应该是相等的呀,然后列举了很多东西来证明那肯定是相等的.
    我让他在if判断前把两个打印出来看看  他直接就发现了果然不相等.很容易就找到了问题
    当然  我说的未必正确,就算打印出了$c也未必能看出问题.   不过我建议你还是试一试 毕竟还没有解决对吗?片面之言不喜轻喷
      

  16.   

     $mysqli->insert_id  能获取出来上1次插入的ID。第二次插入也就2字段,1是ID,2是几十个文字,经过测试,第二插入的所需要的东西都存在,例如ID,内容。他硬是不入库。超级的晕死。
      

  17.   

    不入库也没有错误提示?
    这倒是很新奇。打开错误提示,执行php文件的时候记录所有的sql语句,总会有异常的吧。
      

  18.   

    通过事务执行试试:
     $mysqli->autocommit(false);
           //-> savepoint a;会把但前情况记录
           $sql1="update account set balance=balance-2 where id=1";
           $sql2="update account2 set balance=balance+2 where id=2";
           $b1=$mysqli->query($sql1) ;
           $b2=$mysqli->query($sql2) ;
          
           if(!$b1||!$b2){
                  echo "失败,回滚".$mysqli->error;
                  //回滚!
                  $mysqli->rollback();
           }else{
                  //提交[一旦提交没有机会回滚
                  $mysqli->commit();
           }
           $mysqli->close();
           //显示控制台
      

  19.   

    insert into news(Nid,Class)values(null,'$ming')")
    看到用关键字做名称的就应先改掉
      

  20.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK
      

  21.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$c'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK经你的提示,出现无上一次插入ID ECHO 出来是空白。但比较奇怪的是,第三条UPDATE语句,也使用了$c的变量。它的UPDATE是正常的。好奇怪的事情。
      

  22.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$c'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK经你的提示,出现无上一次插入ID ECHO 出来是空白。但比较奇怪的是,第三条UPDATE语句,也使用了$c的变量。它的UPDATE是正常的。好奇怪的事情。
    那你再输出"update xClass set Nid='$c'"
      

  23.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$c'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK经你的提示,出现无上一次插入ID ECHO 出来是空白。但比较奇怪的是,第三条UPDATE语句,也使用了$c的变量。它的UPDATE是正常的。好奇怪的事情。
    那你再输出"update xClass set Nid='$c'"
    还有什么办法知道问题在那吗?明明第一次是插入了。第二次,因丢失ID而插不入。第三次又可以插入。为什么每次都是第二次插不入呢?为什么第三次就一次都没?这问题,真的很灵异了。
      

  24.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$c'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK经你的提示,出现无上一次插入ID ECHO 出来是空白。但比较奇怪的是,第三条UPDATE语句,也使用了$c的变量。它的UPDATE是正常的。好奇怪的事情。
    那你再输出"update xClass set Nid='$c'"
    还有什么办法知道问题在那吗?明明第一次是插入了。第二次,因丢失ID而插不入。第三次又可以插入。为什么每次都是第二次插不入呢?为什么第三次就一次都没?这问题,真的很灵异了。
    不用去猜测,断句输出最可靠,他最能帮你判断问题所在if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    用我的这个方法,如果他能输出那个语句,说明$c应该是有值的
    至于这个值是什么,看打印出来的结果,如果没输出这个语句,说明$c没有值,返回一些错误信息至于你第三句也是一样的道理,应该是用判断,而不能直接更新,即
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    echo "update xClass set Nid='$c'";
      //更新列表
      $mysqli->query("update xClass set Nid='$c'");
    }
    用这样去测试,就会防止一些意外情况的发生
    用上面的输出语句可以知道$c的值
      

  25.   

    建议下面这样做//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$chaRuZjId'");
    $c 也许是空如果是空就入不了。现在估计都是空的,2个表,
    第一个表是自增,第二个表是根据第一个表的ID来插入ID(NID)
    if($c)判断空与不空意义不大了。是不是 insert_id 此调用需要开启服务器什么什么东西?才能获取ID?
    照理不也是吖。毕竟是有时可以,有时不可以。
    判断还是有必要的,加入第一个插入没空格,而第二个意外插入成功,那你就有多余数据出现了
    不知道你的$c = $mysqli->insert_id;这个函数怎么写的
    是否:mysql_insert_id($this->connid);?$c = $mysqli->insert_id; 这样的返回不是一个整数吗?把这个整数赋值给C。
    c 就是上一次插入的ID数值。然后在用这个数值插入到第二次插入。
    如果没插入成功不就控制有错了
    那你第二句由于你没判断,一样可以执行啊没理由的,第一次插入的时候,肯定是自增了个ID.然后获取最近的插入ID。用此ID在插入表2的id(非自增型)。现在我疑惑的是,这ID是否有机会无法获取?呵呵,我教你判断是绝对有用的,别说肯定的话,你总有意外插入不成功的情况下,第二句话也会执行的,按你这样的,首先是要保证第一次插入成功才能执行下一句,所以教你判断是没错的至于你第一次插入成功,而第二次插入不成功,其实检测很简单的//插入NID和名字
    $mysqli->query("insert into news(Nid,Class)values(null,'$ming')");
    //获取插入的ID
    $c = $mysqli->insert_id;
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    //更新列表
    $mysqli->query("update xClass set Nid='$c'");这个去检测输出,看看输出的是否有问题,没问题然后复制到mysql里取执行,看看提示什么错误就OK经你的提示,出现无上一次插入ID ECHO 出来是空白。但比较奇怪的是,第三条UPDATE语句,也使用了$c的变量。它的UPDATE是正常的。好奇怪的事情。
    那你再输出"update xClass set Nid='$c'"
    还有什么办法知道问题在那吗?明明第一次是插入了。第二次,因丢失ID而插不入。第三次又可以插入。为什么每次都是第二次插不入呢?为什么第三次就一次都没?这问题,真的很灵异了。
    不用去猜测,断句输出最可靠,他最能帮你判断问题所在if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    }
    用我的这个方法,如果他能输出那个语句,说明$c应该是有值的
    至于这个值是什么,看打印出来的结果,如果没输出这个语句,说明$c没有值,返回一些错误信息至于你第三句也是一样的道理,应该是用判断,而不能直接更新,即
    if($c){
    //在插入内容
    echo "insert into newscontents(nid,NewsContent)values('$c','$NeiRong')";//输出看看到底是什么
    $mysqli->query("insert into newscontents(nid,NewsContent)values('$c','$NeiRong')");
    echo "update xClass set Nid='$c'";
      //更新列表
      $mysqli->query("update xClass set Nid='$c'");
    }
    用这样去测试,就会防止一些意外情况的发生
    用上面的输出语句可以知道$c的值测试了。$C,是有时有值,有时没值。