【问题标题】:Update query PHP MySQL [duplicate]更新查询 PHP MySQL
【发布时间】: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' ) ;





?>

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

【问题讨论】:

    标签: php mysql database phpmyadmin blogs


    【解决方案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);
                ?>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-01-03
                  • 2013-05-21
                  • 2011-07-12
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多