为什么我有一个问题,使用php变量将整数传递给mysql查询?

时间:2013-06-29 01:33:30

标签: php mysql sql-update

我正在运行一个带有此行的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");

它更新了!所以问题必须与变量有关,但我无法弄清楚是什么。

有什么想法吗?

5 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如果您同时分配字段(列)名称&变量 $ name &的 $ value 就像那样;

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

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

    希望它有所帮助!

    盖孜

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

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

答案 4 :(得分:-1)

变量$ user_id必须在''内。试试这个:'user_id'='$ user_id'。