如何使用php更新mysql表中的特定表行[重复]

Posted

技术标签:

【中文标题】如何使用php更新mysql表中的特定表行[重复]【英文标题】:How to update specific table row in mysql table using php [duplicate] 【发布时间】:2016-09-26 08:57:31 【问题描述】:

我是 php 的初学者,我正在尝试更新特定行但不起作用。我需要你的帮助: update.php 目录。 '/db_connect.php'; // 连接到数据库 $db = new DB_CONNECT();

    if (isset($_POST['id'])) 

$id = $_POST["id"];
$location = $_POST["location"];
  $sql=mysql_query("UPDATE citizenalert set location='$location' WHERE id ='$id'");


  ?> 

db_config.php

  <?php

   define('DB_USER', "root"); // db user
   define('DB_PASSWORD', ""); // db password (mention your db password here)
     define('DB_DATABASE', "ikirenga"); // database name
      define('DB_SERVER', "localhost"); // db server
     ?>

db_connect.php

           <?php

  class DB_CONNECT 

// constructor
function __construct() 
    // connecting to database
    $this->connect();


// destructor
function __destruct() 
    // closing db connection
    $this->close();


/**
 * Function to connect with database
 */
function connect() 
    // import database connection variables
    require_once __DIR__ . '/db_config.php';

    // Connecting to mysql database
    $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());


    // Selecing database
    $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());

    // returing connection cursor
    return $con;


/**
 * Function to close db connection
 */
function close() 
    // closing db connection
    mysql_close();

    
   ?>

request_update.php

               <!doctype html>

                <html lang="en">

                   <body>
                  <form name="updates" method="post" action="update.php" > 
                   <label>User location</label> <input id="location"  type="text" name="location" > <br><br>
                     <input type="submit" name="submit" value="Submit" /> 
                     </form>  
                     </body>
                     </html>

【问题讨论】:

你遇到了什么错误? 检查您的连接列表,您的代码已为 SQL 注入打开。 令我惊讶的是,人们至今仍在使用 mysql_ 函数。 难怪。 60% 的 *** 显示它 @devpro 可悲的是他们可能是商业网站***.com/questions/38297105/… 【参考方案1】:

请使用以下语法

<?php
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();

if (isset($_POST['id'])) 

$id = $_POST["id"];
$location = $_POST["location"];
$sql = mysql_query(" UPDATE citizenalert set location = " . $location . "   WHERE id = " . $id . ");
  

谢谢。

【讨论】:

谁知道呢,$location 是字符串还是整数。 这里的sql注入 $location 是一个字符串 @NiragireSam:你检查过其他答案了吗?? 是的,我正在检查它,我没有发现任何变化【参考方案2】:

如下更改您的 SQL 查询

$sql=mysql_query("UPDATE citizenalert set location='$location' WHERE id = '$id'");

【讨论】:

这里的sql注入【参考方案3】:

如果我像这样测试你的代码:

<?php 
$id = 1;
$location = "test";
echo $sql="UPDATE citizenalert set location='$location' WHERE id ='$id'";
?>

它给出了这个查询:

UPDATE citizenalert set location='test' WHERE id ='1' 

请在此处检查,这两个值都有问题。

问题:

您在引号之外使用。您需要在单引号内使用它。

修改后的查询具有相同的示例:

echo $sql="UPDATE citizenalert set location='$location' WHERE id ='$id'";

结果:

UPDATE citizenalert set location='test' WHERE id ='1'

旁注:

使用mysqli_*PDO,因为mysql_*PHP 7 中已被弃用和关闭。 您的代码对 SQL 注入开放,您必须使用 SQL 注入进行保护,或者只需使用 Prepared Statement

Prepared Statement 的其他参考: php mysql bind-param, how to prepare statement for update query

【讨论】:

以上是关于如何使用php更新mysql表中的特定表行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用Jquery和PHP单击保存按钮时如何将多个表行更新为mysql表?

如何使用 jQuery 选择具有特定类的下一个表行?

如何使用 PHP 在 MYSQL 中的数据库表中插入、更新、删除记录时创建日志

如何通过表行而不是php中的列来回显多维数组值[关闭]

如何加密 MySQL 表中的特定列?

MySQL - 使用另一个表中的列排序行并且不重复数据