我正在尝试更新cloumn.But每次最后一个数组都添加到table.But我想在一个cloumn上添加一个孔数组。
这是我的代码:
<?php
$keys=array(
"tr-aa",
"tr-ad",
"tr-af",
"tr-ag",
"tr-ak",
"tr-am",
"tr-an",
"tr-al",
"tr-ar",
"tr-av",
"tr-ay",
"tr-bk",
"tr-br",
"tr-bm",
"tr-br",
"tr-bc",
"tr-bg",
"tr-bt",
"tr-bl",
"tr-bd",
"tr-bu",
"tr-ck",
"tr-ci",
"tr-cm",
"tr-dn",
"tr-dy",
"tr-du",
"tr-ed",
"tr-eg",
"tr-en",
"tr-em",
"tr-es",
"tr-ga",
"tr-gi",
"tr-gu",
"tr-hk",
"tr-ht",
"tr-ig",
"tr-ip",
"tr-ib",
"tr-iz",
"tr-km",
"tr-kb",
"tr-kr",
"tr-ka",
"tr-ks",
"tr-ky",
"tr-kk",
"tr-kl",
"tr-kh",
"tr-ki",
"tr-kc",
"tr-ko",
"tr-ku",
"tr-ml",
"tr-mn",
"tr-mr",
"tr-ic",
"tr-mg",
"tr-ms",
"tr-nv",
"tr-ng",
"tr-or",
"tr-os",
"tr-ri",
"tr-sk",
"tr-ss",
"tr-si",
"tr-sp",
"tr-sv",
"tr-su",
"tr-sr",
"tr-tg",
"tr-tt",
"tr-tb",
"tr-tc",
"tr-us",
"tr-va",
"tr-yl",
"tr-yz",
"tr-zo"
);
$q="UPDATE Cities SET CityKey=? ";
for ($i=0; $i<sizeof($keys); $i++) {
$query = $baglanti->prepare($q);
$query->execute($keys[$i]);
}
?>
通常每次迭代pdo都会执行更新并准备sql语句。这看起来很正常。但是我无法意识到错误是什么?
我哪里错了?
由于
答案 0 :(得分:1)
没有桌子很难提供帮助,但我已经看到了问题。
如果要在表中添加值,则应使用INSERT INTO而不是UPDATE。
INSERT INTO Cities (col1, Col2 ...) VALUES ('val1', 'val2' ...)
如果您确实要更新现有行,则应添加where语句,否则每次执行更新时都会更新表的所有值,而最后一次更新是唯一适用的。
UPDATE Cities SET CityKey=? WHERE [condition to match the good city]
答案 1 :(得分:0)
查看Mysqli :: execute()的规范:http://php.net/manual/tr/mysqli-stmt.execute.php 它不需要参数,你需要在每次执行http://php.net/manual/tr/mysqli-stmt.bind-param.php之前调用Mysqli :: bind_param()
但是您的查询完全没有意义,您可以立即将所有城市更新为相同的值。也许具体你想要实现什么。如果要将数据插入表中,则需要INSERT语句:http://www.w3schools.com/php/php_mysql_insert.asp
答案 2 :(得分:-1)
您应该更改查询:
$q="INSERT INTO Cities SET CityKey=?";