php – mysql REPLACE INTO表有数百列

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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_error().您发布的内容似乎是合法代码,但是值需要引用’和escaped可能注入,而不是勾选.
使用双引号“为第二个查询的封装.

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)"); 
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – mysql REPLACE INTO表有数百列全部内容,希望文章能够帮你解决php – mysql REPLACE INTO表有数百列所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。