更新查询 PHP MySQL

Posted

技术标签:

【中文标题】更新查询 PHP MySQL【英文标题】:Update query PHP MySQL [duplicate] 【发布时间】:2012-02-12 04:38:38 【问题描述】:

谁能帮我理解为什么这个更新查询没有更新我数据库中的字段?我在我的 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' ) ;





?>

我不明白为什么它不起作用。

【问题讨论】:

【参考方案1】:

您必须在查询中的任何 VARCHAR 内容周围加上单引号。所以你的更新查询应该是:

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

此外,直接使用 POST 中的内容更新数据库也是一种糟糕的形式。您应该使用 mysql_real_escape_string 函数清理传入的数据。

【讨论】:

我相信的任何字符串。比如说,查询 SELECT 'Hello World'; 中根本没有 varchar 或字段,但仍然需要引号。 这已经过时了。 是的,亲爱的现代用户,不要使用这个已弃用且不安全的查询。您应该将mysqlipdo 与准备好的语句和占位符一起使用,以确保查询安全。切勿盲目地将用户提交的数据直接写入您的查询中。 是的,这肯定不是在 php 中执行 mysql 查询的正确方法。它回答了最初的问题,但已经过时了。【参考方案2】:

在不知道您得到的实际错误是什么的情况下,我猜它缺少引号。尝试以下方法:

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

【讨论】:

【参考方案3】:

需要使用点运算符的需要添加引号:

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

【讨论】:

【参考方案4】:

这里我更新了两个变量和当前日期和时间

$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

【讨论】:

【参考方案5】:

首先,您应该定义“不起作用”。 其次,我假设您的表格字段“内容”是 varchar/text,因此您需要将其括在引号中。 content = '$content' 最后但同样重要的是:在查询后直接使用echo mysql_error() 进行调试。

【讨论】:

使用mysql_error()查找数据库的任何错误。通过这种方式您可以解决您的问题 回显似乎不是一种方便的方法。如果您不在时发生错误怎么办? 我建议使用 trigger_error()。它不仅会遵循站点范围的错误报告规则(日志或显示),而且还提供文件名和行号,这些信息在日志错误的情况下是无价的【参考方案6】:

在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';";

【讨论】:

【参考方案7】:

你必须先写单引号,然后双引号,然后在字段名称之前和之后加点

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

【讨论】:

【参考方案8】:

更新表格的行或列

$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;

【讨论】:

【参考方案9】:
<?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);
?>

【讨论】:

以上是关于更新查询 PHP MySQL的主要内容,如果未能解决你的问题,请参考以下文章

使用php进行mysql查询更新

更新查询使 Codeigniter PHP 中 MySQL 的记录为空

如何使用表值来驱动使用 PHP 的 mySQL 查询

更新查询更新不起作用

PHP 中的 MySQL 查询不再有效

PHP查询MYSQL数据库,没有数据