0

stackoverflow の別のトピックからコードをコピーしましたが、ここでは機能していません。インターネットで検索しましたが、この単純なことについて何も見つかりませんでした。クエリが機能していません。

テーブルを更新したい。

形:

<form method="post" action="klas_bewerken.php">
  <label>Old</label>  <input name="old" type="text" id="textfield" />
  <label>New</label>  <input name="new" type="text" id="textfield" />
<input type="submit" value="Change now" />
</form>

Klas_bewerken.php

<?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$old = $_POST['old'];
$new = $_POST['new'];

echo "Old: $old";
echo "<br /> New: $new";

mysqli_query("UPDATE klas SET klas_id='$new' WHERE klas_id='$old'");

ECHO "<br /><br />Updated.";

mysql_close($con);

?>

コードは私には問題ないように見えます..誰かが間違いを見ていますか? テーブルが更新されていません。

ありがとう

編集

したがって、さらに説明します。テーブル klas には klas_id という 1 つの列しかありません。行があります:A3D。それをA3Cに変えたいので、旧に「A3D」、新に「A3C」と記入します。

4

4 に答える 4

2

ここで手続き型と OO スタイルを混在させています。これら 2 つを混在させることはできません。コードは次のようになります (テストされていませんが、動作するはずです)。

<?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$old = $_POST['old'];
$new = $_POST['new'];

echo "Old: $old";
echo "<br /> New: $new";

$mysqli->query("UPDATE klas SET klas_id='$new' WHERE klas_id='$old'");

ECHO "<br /><br />Updated.";
$mysqli->close();

?>

また、より広く使用する場合は、これらの文字を必ずエスケープしてください

于 2012-12-25T14:37:41.307 に答える
0

接続を作成して POST 変数を取得したら、次のことを試してください。

$update = "UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'";
if ($run = $mysqli->query($update)) {
    echo 'Success';
    $run->free();
    $mysqli->close();
} else {
    echo 'Error Updating Content';
    exit();
}
于 2012-12-25T14:15:00.737 に答える
0

に何も渡されない場合、コードはそれ自体では更新できPOSTず、SQL は POST 変数によって更新されます。次のように送信されたかどうかを最初に確認してください。

また、SQL インジェクションを防ぐために変数をエスケープする必要があります。

また、mysql代わりに接続を閉じるときに作成していますmysqli

      <?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (isset($_POST['submit'])){
$old = mysqli_real_escape_string($_POST['old']);
$new = mysqli_real_escape_string($_POST['new']);

echo "Old: ". $old;
echo "<br /> New: " .$new;

$mysqli->query("UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'");
mysqli_close($mysqli); }
 ECHO "<br /><br />Updated.";
?> 
于 2012-12-25T14:34:14.583 に答える
-2

このようにクエリを実行してみてください

mysqli_query("UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'");

「$ old」を「$ new」として更新していたと思いますが、「$ old」値は存在しませんでした

于 2012-12-25T14:05:01.130 に答える