搜索热词
我有一个表,我想复制表中的特定行.我知道这不是最好的做事方式,但我们正在寻找快速解决方案.
这里的内容比我最初的想法更难,我需要做的就是将整个记录复制到MySql中自动增量表中的新记录,而无需指定每个字段.这是因为该表可能在将来发生变化,并可能会破坏重复.我将从PHP复制@R_301_198@记录.
这是一个问题,因为在’SELECT *’查询中,@R_301_198@将尝试复制正在复制的记录的ID,这会产生重复的ID错误.
这封锁了:
INSERT INTO客户SELECT * FROM customer WHERE customerid = 9181.它还阻止了INSERT INTO客户(Field1,Field2,…)SELECT Field1,….. FROM customer WHERE customerid = 9181.
有没有办法从PHP或@R_301_198@做到这一点?
最佳答案
我终于找到了这段代码.我相信它将来会帮助别人.所以这就是.
function Duplicate@R_301_198@Record ($table,$id_field,$id) {
// load the original record into an array
$result = @R_301_198@_query("SELECT * FROM {$table} WHERE {$id_field}={$id}");
$original_record = @R_301_198@_fetch_assoc($result);
// insert the new record and get the new auto_increment id
@R_301_198@_query("INSERT INTO {$table} (`{$id_field}`) VALUES (NULL)");
$newid = @R_301_198@_insert_id();
// generate the query to update the new record with the prevIoUs values
$query = "UPDATE {$table} SET ";
foreach ($original_record as $key => $value) {
if ($key != $id_field) {
$query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'",';
}
}
$query = substr($query,strlen($query)-2); # lop off the extra trailing comma
$query .= " WHERE {$id_field}={$newid}";
@R_301_198@_query($query);
// return the new id
return $newid;
}
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。