使用带有SET的PHP UPDATE作为设置为另一个变量的变量吗?

时间:2019-01-20 02:24:49

标签: php sql

我想知道这样的事情是否可能吗?

$joinguild = "UPDATE guild SET '.$rank.'='.$receiver.' WHERE name ='"$dupecheckinfo["guild"]"'";

我正在尝试设置'。$ rank。'='。$ receiver。',但是我不知道是否可以在$ rank所在的位置使用变量。是否有编写此内容的正确方法。可能吗如果没有,您将如何处理?谢谢!

Here is my SQL table im working with

编辑:查看我的表如何具有Rank1 Rank2 Rank3等。那么我正在传递要设置的等级值,例如

$rank = $_POST["rank"];

$joinguild = "UPDATE guild SET '.$rank.'='.$username.' WHERE name ='"$dupecheckinfo["guild"]"'";

3 个答案:

答案 0 :(得分:1)

您的问题尚不清楚,但是您的 PHP 语句中存在一些问题。我认为您正在尝试使用PHP变量创建 SQL UPDATE 查询。

尝试一下:

$joinguild = "UPDATE guild SET $rank='$receiver' WHERE name='" . $dupecheckinfo["guild"] . "'";

此处$rank在您的表中应具有有效的列名。另请阅读有关SQL注入的信息。

答案 1 :(得分:0)

您的问题尚不清楚,但是要更新表中的记录,您可以使用以下代码行:

  $sql=mysqli_query($conn, "UPDATE `table` SET option1='$op1', option2='$op2', option3='$op3', option4='$op4' where id='$id'");      

如果不清楚,请告诉我。

答案 2 :(得分:0)

是的,您可以在查询中为表名和字段名使用变量。但是,应尽可能避免使用它,因为它通常会导致SQL injection漏洞。与其通过字符串连接构建查询,不如将prepared statementsbound parameters一起使用。有关一些很好的示例,请参见this pagethis post

不幸的是,绑定机制仅适用于值,不适用于表名或字段名,因此最好尝试避免使用可变的表/字段名。如果您确定绝对必要,那么最好的方法是确保变量的内容与允许的表/字段名称的预设白名单相匹配。