[PHP/MySQL]:在循环中准备好的语句
我的问题对我来说似乎很小,但我无法找到一个合适的解决办法。 设置:我有一个“city_locations”表,其中有“country”、“city”、“longitude”、“latitude”列。国家由两个字母的ISO代码表示。我希望他们是全名 为此,我导入了表'countrycodes',其中只包含'name'和'code'列[PHP/MySQL]:在循环中准备好的语句,php,mysql,loops,mysqli,prepared-statement,Php,Mysql,Loops,Mysqli,Prepared Statement,我的问题对我来说似乎很小,但我无法找到一个合适的解决办法。 设置:我有一个“city_locations”表,其中有“country”、“city”、“longitude”、“latitude”列。国家由两个字母的ISO代码表示。我希望他们是全名 为此,我导入了表'countrycodes',其中只包含'name'和'code'列 $namechange = $con->prepare("UPDATE city_locations SET country=? WHERE country=?
$namechange = $con->prepare("UPDATE city_locations SET country=? WHERE country=?");
$list = $con->prepare("SELECT name, code FROM countrycodes");
$list->execute();
$list->bind_result($name, $code);
$namechange->bind_param('ss', $name, $code);
while ($list->fetch()){
while ($namechange->execute()) {}
echo "$code is now $name <br>";
}
$namechange=$con->prepare(“更新城市位置设置国家=?所在国家=?”);
$list=$con->prepare(“从countrycodes中选择名称、代码”);
$list->execute();
$list->bind_结果($name,$code);
$namechange->bind_参数('ss',$name,$code);
而($list->fetch()){
而($namechange->execute()){}
echo“$code现在是$name
”;
}
我成功地检索(外部)while循环中的所有对
$namechange->execute();然而,我什么也没做——我试过使用while循环,也试过不使用while循环,试过在查询中使用LIMIT 0,10000(尽管我不完全确定我是否正确理解LIMIT)。无论是否使用while循环,该语句都不会执行任何操作。如果限制为0,10000,则语句不能正确地预先定义(给出一个错误)
我还尝试在while循环的每个步骤中绑定params new,但似乎也没有做任何事情
当从我的web界面运行相同的命令时,它工作正常。但是,在这种情况下,我必须手动键入所有200多个代码。看起来工作有点多
非常感谢你的帮助,
杰尔德
编辑:$con属于mysqli类型。$namechange=$con->prepare(“更新城市位置集国家=?其中国家=?”;
$namechange = $con->prepare("UPDATE city_locations SET country=? WHERE country=?");
$list = $con->prepare("SELECT name, code FROM countrycodes");
$list->execute();
$list->bind_result($name, $code);
while ($list->fetch()){
$namechange->bind_param('ss', $name, $code);
$namechange->execute();
echo "$code is now $name <br>";
}
$list=$con->prepare(“从countrycodes中选择名称、代码”);
$list->execute();
$list->bind_结果($name,$code);
而($list->fetch()){
$namechange->bind_参数('ss',$name,$code);
$namechange->execute();
echo“$code现在是$name”; }
它可能会解决您的问题。这是mysqli。那么,它会给我表的前10.000还是适合我查询的前10.000?它将从索引0->10返回。000@JeroenBollenMySQLIOO风格切题的问题:改为PDO是更明智还是更注重品味?我还在项目的早期阶段(不到1000行代码),并且肯定愿意更改。绑定参数不应该在第一个while循环中吗?因此,我们最终提出了一个甚至没有尝试提供的问题,一个未注释的代码转储作为答案,以及一个带有“不工作”注释的接受答案标志。这将是非常有帮助的谁在未来浏览这里。没有错误消息,即使有错误报告(E_所有);(除了失败的prepared语句外,这是由于不正确的查询)。因为几乎每个人都认为这是正确的解决方案,所以我认为这是正确的方法,通常对其他人有效(如上所述,我已经决定我甚至不想再解决我的问题)。如果您认为删除正确答案更符合SO的一般准则,我会这样做。更新:在处理相关问题时,我意识到在导入.csv时,所有“代码”条目都保留了换行符。再次快速导入表,出于好奇,我尝试了这个解决方案,它奏效了。@KjeldSchmidt mysqli扩展有(IMHO,一个荒谬的数量)函数来获取错误消息,他们不会称自己。我的评论中的蓝色单词是指向其中一个的链接。如果您最终发现了问题所在,以及这段代码将如何解决问题,那么最有用的方法就是编辑答案并添加一些解释。如果你没有足够的代表,发表评论也很好。