2015-03-04 3 views
0

Мне нужно обновить начальные значения столбца mysql, столбца токенов, в начале, все значения равны нулю, затем их необходимо обновить с помощью функции генерации токенов , как это делает, просто это не распространяются обновления любых значений, см:Обновление столбца mysql с использованием петли php

$query = "SELECT `id` FROM `acuses_recibo` WHERE `id_envio`=101 AND `token` IS NULL"; 
$result = mysqli_query($conn, $query); 

здесь я выбираю id's этих нулевых маркеров для конкретного id_envio, то

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){//as long as there are token null values 
    foreach($row as $id=>$row['id']){ 
    $indice = $row['id']; 
    $v=getToken(32); 
    echo $v.PHP_EOL; 
    echo "id es: ".$row['id'].PHP_EOL; 
    $queryDos = "UPDATE `acuses_recibo` SET `token`={$v} WHERE `id`={$indice} "; 
    mysqli_query($conn, $queryDos); 
} 

где getToken(32) вычисляет токен длиной 32, таким образом, токен не обновляется, единственный способ, которым они обновляются, - это если я установил token в $queryDos на фиксированное значение, как я мог бы исправить это так, чтобы каждое значение токена обновлялось? Thxx i.a.

+0

Прошлой ночью был ответ, теперь, когда я возвращаюсь к своему коду, вуаля! ответ ушел !, если кто-то ответил, но потом решил удалить его, не могли бы вы сказать, почему ответ был удален? –

ответ

0

Это, как я ее решил, я разделил проблему на две части, первый раз выбирает все id для конкретного id_envio следующим

$query = "SELECT `id` FROM `acuses_recibo` WHERE `id_envio`=101 AND `token` IS NULL"; 
$result = mysqli_query($conn, $query); 
// an arrays is created and used to store the id´s selected 
$members = array(); 
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
$members[] = array('id'=> $row['id']); 
} 
// the connection is then closed, something I found on mysql not being explicitly multiconnection 
mysqli_close($conn); 
// then a new connection is setup 
$connDos = mysqli_connect($servername, $username, $password, $database); 

Теперь значения лексем обновляются следующим образом пожалуйста, обратите внимание, что $indice должен быть приведен к типу INT, так как массив принес возвращает струне

foreach($members as $m){ 
    $indice = $m["id"]; 
    $indice = intval($indice); 
    $voken=getToken(32); 
    $queryDos = " UPDATE `acuses_recibo` SET `token`='{$voken}' WHERE `id`='{$indice}' "; 
    if (mysqli_query($connDos, $queryDos)) { 
    echo "Record updated successfully".PHP_EOL; 
    } else { 
    echo "Error updating record: " . mysqli_error($connDos).PHP_EOL; 
    } 

} 

затем, второе соединение закрыто

mysqli_close($connDos); 

и так я могу обновить значения токена до их вычисленных значений. Надеюсь, это поможет кому-то.

Смежные вопросы