0

我正在运行一个带有这一行的 php 函数:

mysql_query("UPDATE `user-table` SET `$field` = '$value' WHERE `user_id` = $user_id");

由于某种原因,这不起作用。我已经回显了$user_id变量,取了那个整数并将它放在查询中的变量的位置,所以它看起来像这样:

mysql_query("UPDATE `user-table` SET `$field` = '$value' WHERE `user_id` = 11");

它更新得很好!所以问题一定与变量有关,但我不知道是什么。

有什么想法吗?

4

4 回答 4

0

它可以取决于您的 php.ini 中的设置。我不记得环境变量的名称,但如果你像这样构建字符串:

mysql_query("UPDATE `user-table` SET `$field` = '".$value."' WHERE `user_id` = ".$user_id.";");

无论您的 php.ini 设置如何,它都应该可以工作,假设您已经转义了 $value,并且确定您的 $user_id 是一个整数。

于 2013-06-29T01:53:18.353 回答
0

如果您将字段(列)名称都分配给变量$name$value,那么;

  1. 字段/列名称不需要在刻度中。所以; a) 将" SET `$field` 更改为SET $field & b)将 " `user-table` 更改为user-table
  2. 因为您引用了整个 sql 语句, - "UPDATE..." - 当您将
    $variable插入字符串并且需要引用它时,您需要转义
    引号或连接字符串,例如:“... ='”。$价值。"' ... ";
  3. 您可能还应该在变量上使用 mysql_real_escape_string() 以避免最常见的 sql 注入类型,例如: "... = '" 。mysql_real_escape_string($value) 。"' ... ";

因此,将它们放在一起,以下应该可以正常工作:

mysql_query("
    UPDATE user-table 
    SET $field = '" . mysql_real_escape_string($value) . "' 
    WHERE user_id = (int)$user_id
");

希望能帮助到你!

盖兹

于 2013-06-29T02:07:07.493 回答
0

我不小心传递了一个未定义的变量,认为它是一个整数。

于 2013-12-17T20:47:59.867 回答
-2

如果我没记错的话,您应该将变量包装成,因为在您的示例中,您实际上是作为字符串{}推送的。$user_id

mysql_query("UPDATE `user-table` SET `$field` = '$value' WHERE `user_id` = {$user_id}");
于 2013-06-29T01:35:50.407 回答