web-dev-qa-db-ja.com

クエリの更新PHP MySQL

この更新クエリがデータベースのフィールドを更新していない理由を理解できる人はいますか?データベースから現在の値を取得するために、私のphpページにこれがあります:

<?php

  $query = mysql_query ("SELECT * FROM blogEntry WHERE username = 'bobjones' ORDER BY id DESC");

  while ($row = mysql_fetch_array ($query)) 
  {
      $id = $row['id']; 
      $username = $row['username'];
      $title = $row['title'];
      $date = $row['date'];
      $category = $row['category'];
      $content = $row['content'];


    ?>

ここに私のHTMLフォーム:

<form method="post" action="editblogscript.php">
ID: <input type="text" name="id" value="<?php echo $id; ?>" /><br />
Username: <input type="text" name="username" value="<?php echo $_SESSION['username']; ?>" /><br />
Title: <input type="text" name="udtitle" value="<?php echo $title; ?>"/><br />
Date: <input type="text" name="date" value="<?php echo $date; ?>"/><br />
Message: <textarea name = "udcontent" cols="45" rows="5"><?php echo $content; ?></textarea><br />
<input type= "submit" name = "edit" value="Edit!">
</form>

ここに私の「editblogscript」があります:

<?php

mysql_connect ("localhost", "root", "");
mysql_select_db("blogass");

if (isset($_POST['edit'])) {

    $id = $_POST['id'];
    $udtitle = $_POST['udtitle'];
    $udcontent = $_POST['udcontent'];


    mysql_query("UPDATE blogEntry SET content = $udcontent, title = $udtitle WHERE id = $id");
}

header( 'Location: index.php' ) ;





?>

なぜ機能しないのか分かりません。

19
user1123557

クエリのVARCHARコンテンツを単一引用符で囲む必要があります。したがって、更新クエリは次のようになります。

mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = $id");

また、POSTからのコンテンツを使用してデータベースを直接更新するのは不適切な形式です。 mysql_real_escape_string関数を使用して受信データをサニタイズする必要があります。

23
davidethell

あなたが取得している実際のエラーが何であるかを知ることなく、私はそれが引用符を欠いていると思います。以下を試してください:

mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = '$id'")
6
MrKiane

ここで、2つの変数を更新し、現在の日付と時刻

$ id = "1";
$ title = "phpmyadmin";

 $sql=  mysql_query("UPDATE table_name SET id ='".$id."', title = '".$title."',now() WHERE id = '".$id."' ");

now()関数は現在の日付と時刻を更新します。

note: For update query we have define the particular id otherwise it update whole table defaulty
4
sudhakar

ドット演算子を使用する必要があるため、引用符を追加する必要があります。

mysql_query("UPDATE blogEntry SET content = '".$udcontent."', title = '".$udtitle."' WHERE id = '".$id."'");
4

まず、「機能しない」と定義する必要があります。
第二に、テーブルフィールド「content」はvarchar/textであると想定しているため、引用符で囲む必要があります。 _content = '{$content}'_
そして最後になりますが、デバッグするクエリの直後にecho mysql_error()を使用してください。

2
pduersteler

引用符がないと思います。次のことを試してください:適切に動作することを望みます

$ sql = mysql_query( "UPDATE table_name SET id = '"。$ u_id。 "'、name = '"。$ u_name。 "'、now()WHERE id = '"。$ u_id。 "'"); //改行

1
Muhammad Anees

単一引用符、二重引用符、フィールド名の前、およびその後のドットを記述する必要があります

mysql_query("UPDATE blogEntry SET content ='".$udcontent."', title = '".$udtitle."' WHERE id = '".$id."' ");
0
fefe

テーブルの行または列を更新する

$update = "UPDATE daily_patients SET queue_status = 'pending' WHERE doctor_id = $room_no and serial_number= $serial_num";

if ($con->query($update) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $con->error;
}
0
A.A Noman
<?php
require 'db_config.php';


  $id  = $_POST["id"];
  $post = $_POST;

  $sql = "UPDATE items SET title = '".$post['title']."'

    ,description = '".$post['description']."' 

    WHERE id = '".$id."'";

  $result = $mysqli->query($sql);


  $sql = "SELECT * FROM items WHERE id = '".$id."'"; 

  $result = $mysqli->query($sql);

  $data = $result->fetch_assoc();


echo json_encode($data);
?>
0
user9232865

SQLクエリでこのようにしてみてください、それはうまく動作します。

$sql="UPDATE create_test set url= '$_POST[url]' WHERE test_name='$test_name';";

複数の列を更新する必要がある場合は、次のように使用します。

$sql="UPDATE create_test set `url`= '$_POST[url]',`platform`='$_POST[platform]' WHERE test_name='$test_name';";
0
Vidya