2013-10-15 5 views
0

У меня проблема. Я хочу обновить значения в MySql с помощью цикла while. Мой код до сих пор: Здесь я получаю строки из базы данных:Обновление всех строк в MySql во время цикла PHP

$sql = mysql_query("SELECT * FROM Price WHERE idCar='$idCar'"); 
while($row = mysql_fetch_array($sql)){ 
$i = $i+1; 
$price = $row["price"]; 
$newdate= $row["newdate"]; 
$idCar = $row["idCar"]; 
$idPrice = $row["idPrice"]; 
$sqlsearch .= ' <tr> 
    <td height="31" align="left" valign="middle"><div align="right">Dato:</div></td> 
    <td height="31" align="left" valign="middle"> 
    <fieldset id="example_1"><input type="text" name="newdate" class="field" cols="42" rows="8" id="datepicker'. $i .'" value='. $newdate.' /> 
    &emsp;&emsp;Pris:&nbsp;<input type="text" name="price" class="field" cols="42" rows="8" id="price" value='. $price .' />&emsp;&emsp;&emsp;&emsp; 
    Priceid:&nbsp;<input type="text" name="idPrice" class="field" cols="42" rows="8" id="idPrice" value='. $idPrice .' /> 
    </fieldset></td> 
    </tr>'; 

Здесь я хочу, чтобы обновить новые значения:

$idCar = $_GET['idCar']; 

$sqlupdate = mysql_query("UPDATE Price SET newdate='$newdate', price='$price' WHERE idPrice='".$idPrice."'"); 

while($row = mysql_query($sqlupdate)){ 
    $price = $row["price"]; 
    $newdate = $row["newdate"]; 
    $idPrice = $row["idPrice"]; 
    } 
+0

Вы находитесь на правильных линиях. Где проблема? –

+2

Прежде всего **, пожалуйста, избегайте использования функций mysql _ \ *, они устарели **, вместо этого используйте mysqli _ \ * или mysql_pdo \ *. –

+0

Подробнее о [Как предотвратить атаки SQL-инъекций] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) здесь –

ответ

3

При вызове запроса на обновление SQL, вы не нужно пройти через него. Вы пытаетесь снова получить обновленные значения? (У вас уже есть переменные PHP).

Ваш первый фрагмент кода выглядит нормально (кроме разбитого записи вокруг здесь в момент mysql_* устарела, используйте mysqli_* и т.д ...), но ваш второй один:

$sqlupdate = mysql_query("UPDATE Price SET newdate='$newdate', price='$price' WHERE idPrice='".$idPrice."'"); 

Эта линия будет обновляться все записи с idPrice = {contents of idPrice} (установка LIMIT 1, если вы только ожидаете, что одна запись будет обновлена, не повредит вам вообще). Вам не нужно зацикливать его, и я не вижу, что вы на самом деле делаете.

Затем вы должны быть в состоянии определить, если запрос был успешным:

if($sqlupdate) 
    echo 'Success'; 
else 
    echo 'Failed: ' . mysql_error(); 

Я предполагаю, что этот код будет идти внутри текущего цикла из примера один?

--edit-- пример:

// get info from db 
$sql = mysql_query("SELECT * FROM Price WHERE idCar='$idCar'"); 
while($row = mysql_fetch_array($sql)){ 
    $i = $i+1; 
    $price = $row["price"]; 
    $newdate= $row["newdate"]; 
    $idCar = $row["idCar"]; 
    $idPrice = $row["idPrice"]; 

    // display info 
    $sqlsearch .= ' <tr> 
    <td height="31" align="left" valign="middle"><div align="right">Dato:</div></td> 
    <td height="31" align="left" valign="middle"> 
    <fieldset id="example_1"><input type="text" name="newdate" class="field" cols="42" rows="8" id="datepicker'. $i .'" value='. $newdate.' /> 
    &emsp;&emsp;Pris:&nbsp;<input type="text" name="price" class="field" cols="42" rows="8" id="price" value='. $price .' />&emsp;&emsp;&emsp;&emsp; 
    Priceid:&nbsp;<input type="text" name="idPrice" class="field" cols="42" rows="8" id="idPrice" value='. $idPrice .' /> 
    </fieldset></td> 
    </tr>'; 

    $newdate = 'Your value to update'; 
    $price = 'Your price to update'; 
    // update data 
    $sqlupdate = mysql_query("UPDATE Price SET newdate='$newdate', price='$price' WHERE idPrice='".$idPrice."'"); 
    // exit with error message if there was an error 
    if(!$sqlupdate) die('Error:' . mysql_error()); 
} 
+0

Ваш ответ лучше моего. Удалено мое и сохранено ваше –

+0

Hey Scrowler Большое вам спасибо за ответ. Arhh, поэтому мне не нужно зацикливать, хотя с циклом while, тогда я сохраняю данные в базе данных! Можете ли вы дать небольшой пример того, как получить данные из базы данных, отобразить их в форме, а затем изменить некоторые из них и сохранить их снова в db :)? – chrpust

+0

Thx Scrowler :) – chrpust

-1

mysql_query() возвращает resultValue, а не данные.

Вы бы затем захватить строки, как:

$myRv = mysql_query("SQL GOES HERE"); 

    while($row=mysql_fetch_assoc($myRv)) { 
    // do somehting with $row 
    } 

НО обновление/вставки не возвращают данные с mysql_fetch_assoc или другими функциями.

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