0

私は問題があります。while ループで MySql の値を更新したい。これまでの私のコード: ここで、データベースから行を取得します:

$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"];
    }
4

2 に答える 2

3

SQL 更新クエリを呼び出す場合、ループする必要はありません。更新された値を再度取得しようとしていますか? (すでにPHP変数に含まれています)。

最初のコード スニペットは問題ないように見えますが (現時点でこのあたりの壊れたレコードmysql_*は非推奨であり、使用mysqli_*などを除いて...)、2 番目のコードは次のとおりです。

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

この行は、すべてのレコードを で更新しますidPrice = {contents of idPrice}( LIMIT 11 つのレコードだけが更新されることを期待している場合は、put しても問題はありません)。ループする必要はありません。実際に何をしているのかわかりません。

その後、クエリが成功したかどうかを判断できるはずです。

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

このコードは、例 1 の現在のループ内に入ると思いますか?

--編集--例:

// 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());
}
于 2013-10-15T23:09:16.777 に答える
-1

mysql_query() は、データではなく、resultValue を返します。

次に、次のような行を取得します。

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

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

しかし、更新/挿入は、mysql_fetch_assoc またはその他の関数でデータを返しません。

于 2013-10-15T23:34:13.230 に答える