Значение переменной изменяется в цикле while

1

Я и весь мой живой контакт ошеломлены феноменом, где переменная величина изменяется в другой стороне. До того, как значение 2-го цикла будет правильным, но внутри второго значения цикла неверно.

Вот реальный код.

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();
        }
    }
}

Как это возможно и как мне исправить мой код?

  • 0
    Это реальный код или репродукция? Актуальный код поможет
  • 0
    Можете ли вы получить оригинальный код? возможно у вас есть опечатка в оригинальном названии $ variable1
Показать ещё 6 комментариев
Теги:
csv
while-loop
variables

2 ответа

0
Лучший ответ

Выяснилось, что по какой-то причине $ 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();
            }
        }
    }
}
0

'column' - это зарезервированное имя переменной в соответствии с этой статьей:

http://hockinson.com/programmer-web-designer-denver-co-usa.php?s=43

что может привести к неожиданным результатам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню