Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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表中复制一行,但创建一个新的自动ID并更新2个其他字段_Php_Mysql - Fatal编程技术网

Php 从MySQL表中复制一行,但创建一个新的自动ID并更新2个其他字段

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

我正在使用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 = "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。啊,对了。有道理。谢谢:)