【问题标题】:Can't update mysql database with text无法使用文本更新 mysql 数据库
【发布时间】:2016-12-22 07:45:32
【问题描述】:

我可以使用以下代码更新我的数据库:

$id = 1;
$client = 3456;
$sql = "UPDATE production SET client=$client WHERE id=$id";

但是,如果$client 变量是文本字符串(而不是数字),它将不起作用。

$id = 1;
$client = "some text";
$sql = "UPDATE production SET client=$client WHERE id=$id";

我的数据库中的客户字段是 VARCHAR,限制为 50 个字符。有什么明显的我忽略了吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在字符串的开头和结尾添加单引号或双引号以使mysql查询中的字符串。

    替换

    $sql = "UPDATE production SET client=$client WHERE id=$id";
    

    $sql = "UPDATE production SET client='$client' WHERE id=$id";
    

    如果字符串中有单引号,上述内容可能会中断,因此您可以使用addslashes 来赋值。

    试试

    $sql = "UPDATE production SET client='".addslashes($client)."' WHERE id=$id";
    

    注意

    上述查询中存在 SQL 注入的可能性。请尝试使用prepare query来防止SQL注入

    【讨论】:

    • 我知道这将是显而易见的事情,一双新的眼睛会立即看到。非常感谢!
    • $sql = "更新生产 SET client='$client' WHERE id=$id"; with $sql = "UPDATE production SET client='$client' WHERE id='$id'";
    • 如果 $client 可以包含一些' 字符,你可以使用:$sql = 'UPDATE production SET client='. addslashes($client) .' WHERE id=$id';
    • @user1267980 我很高兴它对你有用。如果你觉得有用,请在我的答案上打勾:)
    【解决方案2】:

    当你像这样传递字符串时,在查询中添加单引号,

    $sql = "UPDATE production SET client='$client' WHERE id=$id";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2019-04-27
      • 2021-10-09
      • 2015-07-23
      • 2014-11-10
      • 2013-02-06
      相关资源
      最近更新 更多