无法用文本更新mysql数据库

时间:2016-12-22 07:45:33

标签: php mysql

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

$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个字符。有什么明显我在忽视吗?

2 个答案:

答案 0 :(得分:6)

在字符串的开头和结尾添加单引号或双引号,使其成为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注入

答案 1 :(得分:0)

在传递字符串时在查询中添加单引号,

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