Php while循环中变量更改的值
我和我所有的现场联系人都被另一边的变量值发生变化的现象震惊了。前二次循环值正确,但内二次循环值不正确 这是实际的代码Php while循环中变量更改的值,php,csv,variables,while-loop,Php,Csv,Variables,While Loop,我和我所有的现场联系人都被另一边的变量值发生变化的现象震惊了。前二次循环值正确,但内二次循环值不正确 这是实际的代码 try { $yhteys = new PDO('mysql:host=localhost;dbname=XXXX', 'YYYY', 'ZZZZ'); } catch (PDOException $e) { die("VIRHE: " . $e->getMessage()); } $yhteys->setAttribute(PDO::ATTR_ER
try {
$yhteys = new PDO('mysql:host=localhost;dbname=XXXX', 'YYYY', 'ZZZZ');
} catch (PDOException $e) {
die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$yhteys->exec("SET NAMES utf8");
$kysely = $yhteys->prepare('SELECT viite FROM hakija WHERE vaihe = 1 ');
$kysely->execute();
$file = fopen("tilit.csv","r");
while(! feof($file)) {
$tilirivi=fgetcsv($file,100,";");
if ($tilirivi[4] < 0) continue;
$viiteviesti = substr($tilirivi[3], 1);
//print "Viiteviesti1: $viiteviesti\n"; produces correct print
while ($rivi = $kysely->fetch()) {
//print "Viiteviesti2: $viiteviesti\n"; produces incorrect print
$kantaviite=$rivi["viite"];
if ($viiteviesti == $kantaviite ) {
$asetus = $yhteys->prepare("UPDATE hakija SET vaihe=2 WHERE viite='$viiteviesti' ");
$asetus->execute();
}
}
}
试试看{
$yhteys=new-PDO('mysql:host=localhost;dbname=XXXX','YYYY','ZZZZ');
}捕获(PDO$e){
死亡(“病毒:”..e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$yhteys->exec(“设置名称utf8”);
$kysely=$yhteys->prepare('SELECT viite FROM hakija,其中vaiche=1');
$kysely->execute();
$file=fopen(“tilit.csv”、“r”);
而(!feof($file)){
$tilirivi=fgetcsv($file,100,“;”);
如果($tilirivi[4]<0)继续;
$viiteviesti=substr($tilirivi[3],1);
//打印“Viiteviesti1:$viiteviesti\n”;生成正确的打印
而($rivi=$kysely->fetch()){
//打印“Viiteviesti2:$viiteviesti\n”;生成不正确的打印
$kantavite=$rivi[“viite”];
如果($viiteviesti==$kantaviite){
$asetus=$yhteys->prepare(“更新hakija集合vaihe=2,其中viite='$viiteviesti'”);
$asetus->execute();
}
}
}
这是怎么可能的?我应该如何更正我的代码?
'column'
是本文中保留的变量名:
这可能会导致意外结果。
'column'
是本文中的保留变量名:
这可能会导致意外的结果。出于某种原因,$kysely-fecth()没有返回任何内容。我让代码正常工作,下面是解决方案:
try {
$yhteys = new PDO('mysql:host=localhost;dbname=XXXX', 'YYYY', 'ZZZZ');
} catch (PDOException $e) {
die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$yhteys->exec("SET NAMES utf8");
$kysely = $yhteys->prepare('SELECT viite FROM hakija WHERE vaihe = 1 ');
$kysely->execute();
$kysely->setFetchMode(PDO::FETCH_NUM);
$result = $kysely->fetchAll();
$file = fopen("tilit.csv","r");
while(! feof($file)) {
$tilirivi=fgetcsv($file,100,";");
if ($tilirivi[4] < 10) continue;
$viiteviesti = substr($tilirivi[3], 1);
foreach ($result as $rivi) {
foreach ($rivi as $kantaviite) {
if ($viiteviesti == $kantaviite ) {
$asetus = $yhteys->prepare("UPDATE hakija SET vaihe=2 WHERE viite='$viiteviesti' ");
$asetus->execute();
}
}
}
}
试试看{
$yhteys=new-PDO('mysql:host=localhost;dbname=XXXX','YYYY','ZZZZ');
}捕获(PDO$e){
死亡(“病毒:”..e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$yhteys->exec(“设置名称utf8”);
$kysely=$yhteys->prepare('SELECT viite FROM hakija,其中vaiche=1');
$kysely->execute();
$kysely->setFetchMode(PDO::FETCH_NUM);
$result=$kysely->fetchAll();
$file=fopen(“tilit.csv”、“r”);
而(!feof($file)){
$tilirivi=fgetcsv($file,100,“;”);
如果($tilirivi[4]<10)继续;
$viiteviesti=substr($tilirivi[3],1);
foreach(结果为$rivi){
foreach($rivi作为$Kantavite){
如果($viiteviesti==$kantaviite){
$asetus=$yhteys->prepare(“更新hakija集合vaihe=2,其中viite='$viiteviesti'”);
$asetus->execute();
}
}
}
}
出于某种原因,$kysely-fecth()没有返回任何内容。我让代码正常工作,下面是解决方案:
try {
$yhteys = new PDO('mysql:host=localhost;dbname=XXXX', 'YYYY', 'ZZZZ');
} catch (PDOException $e) {
die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$yhteys->exec("SET NAMES utf8");
$kysely = $yhteys->prepare('SELECT viite FROM hakija WHERE vaihe = 1 ');
$kysely->execute();
$kysely->setFetchMode(PDO::FETCH_NUM);
$result = $kysely->fetchAll();
$file = fopen("tilit.csv","r");
while(! feof($file)) {
$tilirivi=fgetcsv($file,100,";");
if ($tilirivi[4] < 10) continue;
$viiteviesti = substr($tilirivi[3], 1);
foreach ($result as $rivi) {
foreach ($rivi as $kantaviite) {
if ($viiteviesti == $kantaviite ) {
$asetus = $yhteys->prepare("UPDATE hakija SET vaihe=2 WHERE viite='$viiteviesti' ");
$asetus->execute();
}
}
}
}
试试看{
$yhteys=new-PDO('mysql:host=localhost;dbname=XXXX','YYYY','ZZZZ');
}捕获(PDO$e){
死亡(“病毒:”..e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$yhteys->exec(“设置名称utf8”);
$kysely=$yhteys->prepare('SELECT viite FROM hakija,其中vaiche=1');
$kysely->execute();
$kysely->setFetchMode(PDO::FETCH_NUM);
$result=$kysely->fetchAll();
$file=fopen(“tilit.csv”、“r”);
而(!feof($file)){
$tilirivi=fgetcsv($file,100,“;”);
如果($tilirivi[4]<10)继续;
$viiteviesti=substr($tilirivi[3],1);
foreach(结果为$rivi){
foreach($rivi作为$Kantavite){
如果($viiteviesti==$kantaviite){
$asetus=$yhteys->prepare(“更新hakija集合vaihe=2,其中viite='$viiteviesti'”);
$asetus->execute();
}
}
}
}
这是实际代码还是复制品?实际代码将帮助您获得原始代码吗?可能您在$variable1的原始名称中有输入错误。如果$variable1的值确实从第5行更改为第8行,则该变量必须是引用,$kysely->fetch更新该值。如果$kysely是一个简单的PDO对象,那么您的代码中还有一些在示例中看不到的错误。我将其编辑为实际代码。当您回显$kysely->fetch()
和$rivi
时,会得到什么?这是实际代码还是复制?实际代码将帮助您获得原始代码吗?可能您在$variable1的原始名称中有输入错误。如果$variable1的值确实从第5行更改为第8行,则该变量必须是引用,$kysely->fetch更新该值。如果$kysely是一个简单的PDO对象,那么您的代码中还有一些在示例中看不到的错误。我将其编辑为实际代码。当您回显$kysely->fetch()
和$rivi
时会得到什么?