首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MySQL数据库中的388列更新行

用MySQL数据库中的388列更新行
EN

Stack Overflow用户
提问于 2017-03-03 10:46:00
回答 1查看 46关注 0票数 0

我在更新包含388列的MySQL数据库中的表时遇到了问题。插入新行非常有效,但更新现有行就不行了(我没有收到任何错误消息)。我也不太确定我使用的插入/udpate数据的方式是否是最好的,因为我有一个非常长的代码,这也是非常脆弱的错误。嗯,我相信这件事可以解决得更好!

这是我的代码:https://codeshare.io/5DZODE

如果我对这388个值中的每一个都使用这个代码呢?

代码语言:javascript
复制
insert into $table (field, value) values (:name, :value) on duplicate key update value=:value2

帮助和改进的想法将是伟大的!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-03 11:05:56

您可以使用“替换到”语句而不是insert语句,这样您只需打印一次数据。

代码语言:javascript
复制
REPLACE INTO `values` (`id`,...) VALUES ($id,...)

另外,为了改进php代码(为了更好地防止失败),我可能会创建一个包含所有变量的数组,然后根据这些值FX打印SQL语句。

代码语言:javascript
复制
$values = array('id'=> $id, ....);
$columns = array();
$replaceValues = array();
$insertValues = array();
foreach ($values as $key => $value)
{
     $columns[] = "`$key`";
     $replaceValues[] = ":$key";
     $insertValues[":$key"] = $value;
}
$pdo = new PDO('mysql:host=xyz;dbname=xyz','xyz','xyz');
$statement = $pdo->prepare('REPLACE INTO `values` ('.implode(',',$columns).') VALUES ('.implode(',',$replaceValues).')');
$statement->execute($insertValues);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42576804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档