我在更新包含388列的MySQL数据库中的表时遇到了问题。插入新行非常有效,但更新现有行就不行了(我没有收到任何错误消息)。我也不太确定我使用的插入/udpate数据的方式是否是最好的,因为我有一个非常长的代码,这也是非常脆弱的错误。嗯,我相信这件事可以解决得更好!
这是我的代码:https://codeshare.io/5DZODE
如果我对这388个值中的每一个都使用这个代码呢?
insert into $table (field, value) values (:name, :value) on duplicate key update value=:value2帮助和改进的想法将是伟大的!谢谢!
发布于 2017-03-03 11:05:56
您可以使用“替换到”语句而不是insert语句,这样您只需打印一次数据。
REPLACE INTO `values` (`id`,...) VALUES ($id,...)另外,为了改进php代码(为了更好地防止失败),我可能会创建一个包含所有变量的数组,然后根据这些值FX打印SQL语句。
$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);https://stackoverflow.com/questions/42576804
复制相似问题