如何使用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表?