php - 有没有办法在 MySQL 更新查询中使用变量

标签 php mysql

假设我有这样一个表单

<?php include 'file2.php' ; ?>
<form action="file1.php" method="POST">
   <input type="hidden" name="LHS" value="column1">
   <input type="hidden" name="RHS" value="row">
   <button type="submit">Submit</button>
</form>

我在 file2.php 中有一个像这样的更新查询

$lhs = $_POST['LHS']
$rhs = $_POST ['RHS']

$update = "UPDATE table1 SET
           column1 = '".$rhs."'
           WHERE id = '".$_SESSION['id']."'";

mysqli_query($conn, $update);

所以我的问题是如何使用变量 ($lhs) 代替“column1”来更新 mysql 数据

我也尝试过 $table1['column1'] 方法,但它似乎只适用于 Rhs 而不是 LHS

最佳答案

最重要的是:您的查询是开放给 SQL Injection相关攻击。请学习如何使用Prepared Statements

此外,您的$lhs 变量的值似乎是一个Reserved keyword in MySQL。 .顺便说一下,它也是您的列名。所以,你need to use backticks (`),要求 MySQL 将其视为列/表/数据库名称或一些别名表达式。

现在,只需执行以下操作,将 $lhs 用作更新查询中的列:

$update = "UPDATE table1 `" .
          $lhs . "` = '" . $rhs . "' 
          WHERE id = '".$_SESSION['id']."' ";

mysqli_query($conn, $update);

关于php - 有没有办法在 MySQL 更新查询中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621044/

相关文章:

php - 如何使用 PHP 抓取 URL 参数?

php - 一次向数据库中插入多条数据

php - 在 Laravel 5.1 中将对象转换为数组

mysql - SQL 使用嵌套 Order By 平均最大值

PHP MYSQL 按出现的字数对搜索结果进行排序

javascript - 我们如何通过 PHP 中的 AJAX 来填充选择框值更改中的多个文本框

php - MySQL 到 JSON 列出多行

php - 如何知道 Solr 搜索在 Magento CE 中的工作原理

mysql连接四个表并按desc排序结果计数

php - 为什么会返回 "Undefined Index"错误?