2017-01-24 2 views
-4
<?php 
    if($action=='sefaresh'){ 
    $cookiname=$_COOKIE['mybasket']; 
    $stmt = $db->prepare("SELECT `idsabad`,`cookiname`,`idmahsool`,`tedad`,`pardakht` FROM `sabad` WHERE `cookiname`=?"); 
    $stmt->bind_param("s", $cookiname); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($idsabad11, $cookiname1, $idmahsool1, $tedad1, $pardakht1); 
    while ($stmt->fetch()) { 
     $id = $idsabad11; 
     $stmt = $db->prepare("UPDATE `sabad` SET `tedad`=? WHERE `idsabad`=?"); 
     $stmt->bind_param("ii", $_POST['tedad'.$idmahsool1], $id); 
     $stmt->execute(); 
    } 
} 
?> 
+6

этот вопрос настолько неясно, что это не смешно. –

+1

[Почему мне может помочь кто-то?] Не вопрос?] (Http://meta.stackoverflow.com/q/284236) – EJoshuaS

ответ

1

Проблемы заключается в том, из-за объектом оператора $stmt. Вы перезапись внешний объект $stmt заявление внутри while() цикла, чтобы сделать свою работу UPDATE т.е. это заявление $db->prepare("UPDATE сабад SET ... внутри while() возвратит разные заявление объект, который вы относящий $stmt, тем самым переписав оригинальный/внешний $stmt. И вот почему одна строка обновляется.

Таким образом изменить while() петлю следующим образом,

while ($stmt->fetch()) { 
    $id = $idsabad11; 
    $stmt1 = $db->prepare("UPDATE `sabad` SET `tedad`=? WHERE `idsabad`=?"); 
    $stmt1->bind_param("ii", $_POST['tedad'.$idmahsool1], $id); 
    $stmt1->execute(); 
    $stmt1->close(); 
} 
+0

Спасибо за ответ. отлично –