Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Mysql在插入期间增加一列_Php_Mysql_Increment - Fatal编程技术网

PHP Mysql在插入期间增加一列

PHP Mysql在插入期间增加一列,php,mysql,increment,Php,Mysql,Increment,对不起,让我解释一下。。。。recordID自动递增,是我的主键。。。。。LISTINGID引用不同表中的ID。在此表中,1需要为每个具有相同LISTINGID的记录增加recordListingID。我的insert语句最多插入10条具有相同LISTINGID的记录我需要recordListingID从1开始,以此类推 嗨,伙计们 我从php将记录插入mysql,它可以是1个或多个记录,我需要一个COL来递增,第一个条目是1,这是我的插入代码 mysql_query("INSERT INTO

对不起,让我解释一下。。。。recordID自动递增,是我的主键。。。。。LISTINGID引用不同表中的ID。在此表中,1需要为每个具有相同LISTINGID的记录增加recordListingID。我的insert语句最多插入10条具有相同LISTINGID的记录我需要recordListingID从1开始,以此类推

嗨,伙计们

我从php将记录插入mysql,它可以是1个或多个记录,我需要一个COL来递增,第一个条目是1,这是我的插入代码

mysql_query("INSERT INTO car_listing_images (recordID, recordText, recordListingID,   LISTINGID) VALUES ('', '$fileName', '??', '$listingid')");
我把它放在哪里了??是需要增加的列。我怎样才能做到这一点


提前谢谢

您可以使用MySql内置的自动增量功能

  AUTO_INCREMENT


MySql会将指定的字段增加1(或您设置的任何间隔)

我不知道我是否真正理解您的问题

如果您想用每条记录递增一列,则应将其定义为一列。这样,在您的
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')");
<?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');
?>
我仍然强烈建议不要这样做,使用
自动增量
字段是一个更好的实现


在你最后的评论之后,我建议如下。您将无法在MySQL中直接执行此操作(除非您使用变量,但如果您同时插入多个RecordID,则可能会出错)


更改表结构以包含recordListingID列的属性,然后从insert中省略该列,使其自动填充增量数字


即:mysql_查询(“插入到汽车_列表_图像(recordID、recordText、LISTINGID))值(“,$fileName”,“$LISTINGID”)”)

您可以将变量初始化为1并使用:


您可以使用序言:如果您需要有两个字段递增,但没有相互关联,那么您可能做错了。最好不要使用
recordListingID
,而只使用
recordID
,因为它们可能是相同的数字

如果您的表正在运行
InnoDB
,则可以创建事务。然后,您可以尝试以下方法:

$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')");
<?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');
?>

我想我知道你过去/现在想要完成什么。也许有更好的方法,但我所做的是“从表中选择max(id)+1作为nextId”,并将其存储在一个变量中,该变量用在您称为“recordListingID”的次要id字段中

这样,您插入的第一行将具有相同的id和recordListingID,但每一行将自动添加id,但recordListingID将与第一行相同


在我的情况下,一次只有一个用户在执行此操作,因此不会出现错误,但在多用户情况下,您可能需要修改此操作,以防有人同时执行插入操作。比如标记最后一行,这样您的查询就知道它已经完成了,这样您就可以像“select max(id)+1 as nextId from table where lastRow=1”之类的东西

对该字段使用自动递增…这不是答案,他想要一个非主键递增。这对我没有好处,因为我想要递增的列不包含唯一的数据。如果你不想要主键删除主键引用-那是我的错误。有什么理由这会被否决吗?请分享,如果我不正确,请告诉我。$mylid=0;mysql_查询(“插入汽车_列表_图像(recordID、recordText、recordListingID、LISTINGID)值(“'$fileName'、'$MyId+1'、'$LISTINGID'));不,抱歉,您需要在查询中执行此操作,我不确定在简单的insert语句中是否真的可以执行此操作。您可以在插入时使用内部计数器,或者选择MAX,查看我的更新答案(请稍候)。对不起,让我尝试解释一下。。。。recordID自动递增,是我的主键。。。。。LISTINGID引用不同表中的ID。在此表中,1需要为每个具有相同LISTINGID的记录增加recordListingID。我的insert语句最多插入10条具有相同LISTINGID的记录。我需要记录LISTINGID从1开始,以此类推。$next_id=0;foreach($insert as$insert_stmt){$next_id++;$insert_stmt=“insert-INTO-car_-listing_-listing_图像(recordID、recordText、recordListingID、LISTINGID)值(''$fileName'、'$next_id'、'$LISTINGID')”;$insert=mysql_-query($insert_stmt)或die(mysql_-error())}应该可以正常工作,是否有错误?尽管您应该注意,如果
$insert
为空,它将不起作用。您应该改为使用带有特定计数的
for
循环,或在数据数组上循环(即,每当需要运行查询时)。OK recordID已自动递增,对于每个recordID,recordListingID的值可以是1到10。许多RecordID在recordListingIDOkay中都可以有这些值,我在第一个sql查询中添加了一个
“WHERE LISTINGID=$LISTINGID”
。这应该在您添加10项的循环中进行。每次添加具有相同
LISTINGID
的项目时,它都将增加
$recordListingId
。这还允许您稍后返回并添加具有相同
LISTINGID
的记录,而无需跟踪值。