查询插入last_insert_id()会产生相同的id值

时间:2014-08-14 06:43:58

标签: php mysql sql

这是我的信息表:

CREATE TABLE `info` (
  `id_info` int(10) NOT NULL auto_increment,
  `judul_info` varchar(50) collate latin1_general_ci NOT NULL,
  `konten` varchar(255) collate latin1_general_ci NOT NULL,
  `diubah_oleh` varchar(20) collate latin1_general_ci NOT NULL,
  `id_kategori` int(10) NOT NULL,
  `tgl_buat` timestamp NOT NULL default '0000-00-00 00:00:00',
  `tgl_ubah` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `dibuat_oleh` varchar(20) collate latin1_general_ci NOT NULL,
  `id` int(10) NOT NULL,
   PRIMARY KEY  (`id_info`),
   KEY `id_kategori` (`id_kategori`),
   KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=62 ;

这是我的上传表格

CREATE TABLE `upload` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `deskripsi` text,
  `filetype` varchar(200) default NULL,
  `filedata` longblob,
  `filename` varchar(200) default NULL,
  `filesize` bigint(20) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;

我正在使用此查询:

$sql1="INSERT INTO info VALUES('','$judul', '$konten','$diubah_oleh','$kategori',now(),'$tgl_ubah','$dibuat_oleh','')";
$sql2="insert into upload values ('','$keterangan','$tipe','$filedata','$nama_file',$ukuran)";
$sql3="UPDATE info SET id=last_insert_id()";
$result=mysql_query($sql1);
$result=mysql_query($sql2);
$result=mysql_query($sql3);

我希望info.id与upload.id具有相同的值,但是使用此查询,我在info.id中获得的所有值与上次在upload.id中插入的值相同。

5 个答案:

答案 0 :(得分:1)

CREATE TABLE `upload` (
  `id` int(10) unsigned NOT NULL,
  `deskripsi` text,
  `filetype` varchar(200) default NULL,
  `filedata` longblob,
  `filename` varchar(200) default NULL,
  `filesize` bigint(20) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;



        $sql1="INSERT INTO info VALUES('','$judul', '$konten','$diubah_oleh','$kategori',now(),'$tgl_ubah','$dibuat_oleh','')";
        $result=mysql_query($sql1);

        $lastId = mysql_insert_id();

        $sql2="insert into upload values ('$lastId','$keterangan','$tipe','$filedata','$nama_file',$ukuran)";
        $result=mysql_query($sql2);

答案 1 :(得分:1)

下面的上一个更新声明是使用相同的id更新信息表中的所有行,因为没有where语句。

由于您需要info表中的上传表ID信息。

请按以下步骤操作:

首先运行$ sql2。 然后运行$ sql1,在info.id中插入last_insert_id()。 这样您也不需要使用update语句。

答案 2 :(得分:0)

mysql_insert_id()还有一个替代的php函数。您可以使用它来生成在上次执行的查询中插入的ID。

答案 3 :(得分:0)

您可以使用 mysql_insert_id() 来完成此操作。此函数返回从先前的INSERT操作生成的AUTO_INCREMENT ID。您的代码应如下所示

 $sql1="INSERT INTO info VALUES('','$judul', '$konten','$diubah_oleh','$kategori',now(),'$tgl_ubah','$dibuat_oleh','')";
        $result=mysql_query($sql1);

        $lastinsertedid= mysql_insert_id();

        $sql2="insert into upload values ('$lastinsertedid','$keterangan','$tipe','$filedata','$nama_file',$ukuran)";
        $result=mysql_query($sql2);

希望这有助于你

答案 4 :(得分:-1)

你可以尝试这样做:

$ sql1 ="插入信息价值(''' $ judul',' $ konten',' $ diubah_oleh& #39;' $驾驶员学校',现在()' $ tgl_ubah'' $ dibuat_oleh''')&#34 ;;

$ sql2 ="插入上传值('',' $ keterangan',' $ tipe' $ 39; $ filedata& #39;' $ nama_file',$较大规模)&#34 ;;

$ last_id = last_insert_id();

$ sql3 =" UPDATE info SET id ="。$ last_id;

$结果= mysql_query($ SQL1);

$结果= mysql_query($ SQL2);

$结果= mysql_query($ SQL3);