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

时间:2018-10-03 06:37:11

标签: 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上工作

1 个答案:

答案 0 :(得分:1)

最重要的是:您的查询对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);