php – mysql REPLACE INTO表有数百列
我有一张包含数百列的表格.表结构不受我的控制(由第三方控制).该表还有可怕的字段名称,包括空格,单引号等,表值也是如此.该表每小时通过cron更新一次. cron作业每次都会截断并重建表.我还保留了该表的归档表,我使用REPLACE INTO语句根据需要更新或插入.
我的挑战 – 我不想明确定义所有350个字段名称和值,并且在我的REPLACE INTO语句中再次这样做,因为这将花费很长时间并且如果表格改变则需要维护.我宁愿使用数组.这是什么不起作用,但希望给出一个目标的想法(我意识到这是被弃用的MySQL,但它是由于各种原因它是什么): $listings = mysql_query("SELECT * FROM current.table"); while ($listing = mysql_fetch_assoc($listings)){ //prepare variables $fields = array_keys($listing); $fields = implode('`,`',$fields); $fields = "`$fields`"; $values = array_values($listing); $values = implode("`,`",$values); $values = "`$values`"; mysql_query('REPLACE INTO archive.table ($fields) VALUES ($values)'); } 解决方法
作为社区维基发布,没有代表应该来自此,因为它确实解决了OP的问题(根据评论中的建议).
在查询上使用 mysql_query("REPLACE INTO archive.table ($fields) VALUES ($values)"); 以及给出的其他建议. OP的最终代码(摘自评论): while ($listing = mysql_fetch_assoc($listings)){ $fields = array_keys($listing); $fields = implode(',',$fields); $fields = "$fields"; $values = array_values($listing); $values = implode(",",$values); $values = mysql_real_escape_string($values); $values = str_replace("`","'",$values); $values = "'$values'"; mysql_query("REPLACE INTO archive.table ($fields) VALUES ($values)"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |