PHP Mysql在插入期间增加一列

时间:2011-05-10 10:38:06

标签: php mysql increment

抱歉,让我试着解释一下.... recordID自动增量并且是我的主键..... LISTINGID是指不同表中的ID。在此表1中,需要为具有相同LISTINGID的每个记录增加recordListingID。我的insert语句最多插入10条具有相同LISTINGID的记录,我需要将recordListingID从1开始,依此类推。

大家好

我从php中将记录插入mysql它可以是1个或多个记录我需要一个cols来增加第一个条目为1这里是我的插入代码

mysql_query("INSERT INTO car_listing_images (recordID, recordText, recordListingID,   LISTINGID) VALUES ('', '$fileName', '??', '$listingid')");

我放在哪里?是需要增加的col。我怎样才能做到这一点?

提前致谢!

7 个答案:

答案 0 :(得分:2)

您可以使用MySql的内置Auto_Increment功能

  AUTO_INCREMENT

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

MySql会将指定字段增加1(或者你设置的间隔)

答案 1 :(得分:1)

您可以使用user-defined variables

答案 2 :(得分:0)

我不知道我是否真的理解你的问题。

如果您想要为每条记录增加一列,则应将其定义为AUTO_INCREMENT列。这样,在INSERT语句中,如果您将NULL插入该列,则每次都会上升。

或者您可以执行fieldname+1,但始终首选AUTO_INCREMENT


根据我的评论,你可以这样做:

$row = mysql_fetch_assoc(mysql_query("SELECT MAX(recordListingID) AS `max` FROM car_listing_images"));
$next_id = $row['max'] + 1;
mysql_query("INSERT INTO car_listing_images (recordID, recordText, recordListingID,   LISTINGID) VALUES ('', '$fileName', '$next_id', '$listingid')");

我仍然会认真地反对这一点,使用AUTO_INCREMENT字段是一个非常强大的 更好的实现。


在您上次发表评论后,我会建议以下内容。您将无法直接在MySQL中执行此操作(除非您使用变量,但如果您也插入多个RecordID,则可能会出错)。

$next_id = 0;
foreach ($insert as $insert_stmt) {
    $next_id++;
    mysql_query("INSERT INTO car_listing_images (recordID, recordText, recordListingID,   LISTINGID) VALUES ('', '$fileName', '$next_id', '$listingid')");
}

答案 3 :(得分:0)

更改表结构以包含recordListingID列的AUTO_INCREMENT属性,然后省略插入中的列以使其自动填充增量编号。

即:mysql_query(“INSERT INTO car_listing_images(recordID,recordText,LISTINGID)VALUES('','$ fileName','$ listingid')”);

答案 4 :(得分:0)

您可以将变量初始化为1并使用post-increment operator

$value = 1;
for(...){
    $sql = 'INSERT ...';
    $value++;
}

答案 5 :(得分:0)

前言:如果你需要增加2个字段,但彼此没有联系,你可能做错了。最好不要使用recordListingID而只使用recordID,因为它们可能是相同的数字。

如果您的表正在运行InnoDB,您可以创建交易。然后你可以尝试这样的事情:

<?php

mysql_query('START TRANSACTION');

$recordListingId = mysql_result(mysql_query("SELECT count(*)+1 as num FROM car_listing_images WHERE LISTINGID=$listingid"), 'num', 0);

mysql_query("INSERT INTO car_listing_images (recordID, recordText, recordListingID,   LISTINGID) VALUES ('', '$fileName', '$recordListingId', '$listingid')");

mysql_query('COMMIT');
?>

如果您没有innodb,请尝试使用stored procedure

答案 6 :(得分:0)

我想我知道你在/想要完成什么。可能有更好的方法,但我所做的是“从表中选择max(id)+1作为nextId”并将其存储在我称为“recordListingID”的辅助id字段中的变量中。

这样你插入的第一行将具有相同的id和recordListingID,但是每个其他行将auto_inc id,但recordListingID将与第一行相同。

在我的情况下,一次只有一个用户这样做,所以没有错误的可能性,但是在多用户情况下,你可能想要修改它以注意那些在同一时间插入的用户时间。比如可能标记最后一行,所以你的查询知道它已经完成,所以你可以像“select max(id)+1 as nextId from lastRow = 1”或类似的东西。