Php 从MySQL表中复制一行,但创建一个新的自动ID并更新2个其他字段
我正在使用PHP代码Php 从MySQL表中复制一行,但创建一个新的自动ID并更新2个其他字段,php,mysql,Php,Mysql,我正在使用PHP代码 $sql = "SELECT * FROM $table LIMIT 1"; $res = mysql_query($sql) or die(mysql_error()); for ($i = 1; $i < mysql_num_fields($res); $i++) { $col_names .= mysql_field_name($res, $i).", "; } $col_names = substr($col_names, 0, -2); $sql
$sql = "SELECT * FROM $table LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
for ($i = 1; $i < mysql_num_fields($res); $i++) {
$col_names .= mysql_field_name($res, $i).", ";
}
$col_names = substr($col_names, 0, -2);
$sql = "INSERT INTO $table (" . $col_names . ") SELECT " . $col_names . " FROM $table WHERE id = $id";
$res = mysql_query($sql) or die(mysql_error());
$new_id = mysql_insert_id();
$sql=“从$table LIMIT 1中选择*;
$res=mysql\u query($sql)或die(mysql\u error());
对于($i=1;$i
复制单个记录并在插入时生成新的PK。这很好,但我还需要用新创建的记录上的新信息更新3个字段,只是想检查最好的方法是在查询运行后使用update语句,还是有办法在初始INSERT查询中使用update语句?表列将来会更改,但是当前有20多列,因此列出它们可能会很麻烦。您的内容来自初始查询中的$table,因此您的插入基于该列,而不是另一个select。对不起,这是什么意思?您的意思是不要执行第二条语句(INSERT语句)。您仍然需要INSERT,但第一条查询“SELECT*”获取了您需要的所有数据,因此您不需要INSERT中的SELECT。啊,对了。有道理。谢谢:)