无法用文本更新mysql数据库

use*_*980 1 php mysql

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

$id = 1;
$client = 3456;
$sql = "UPDATE production SET client=$client WHERE id=$id";
Run Code Online (Sandbox Code Playgroud)

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

$id = 1;
$client = "some text";
$sql = "UPDATE production SET client=$client WHERE id=$id";
Run Code Online (Sandbox Code Playgroud)

我的数据库中的客户端字段是VARCHAR,限制为50个字符.我有什么明显的俯视吗?

Has*_*aan 6

在字符串的开头和结尾添加单引号或双引号,使mysql查询中的字符串成为字符串.

更换

$sql = "UPDATE production SET client=$client WHERE id=$id";
Run Code Online (Sandbox Code Playgroud)

$sql = "UPDATE production SET client='$client' WHERE id=$id";
Run Code Online (Sandbox Code Playgroud)

如果字符串中有单引号,则上面可能会中断,因此您可以使用addslashes值.

尝试

$sql = "UPDATE production SET client='".addslashes($client)."' WHERE id=$id";
Run Code Online (Sandbox Code Playgroud)

注意:

上面的查询中有SQL注入的可能性.请尝试使用prepare query以防止SQL注入