我可以使用以下代码更新我的数据库:
$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个字符。有什么明显我在忽视吗?
答案 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";