Muh*_*mar 2 php sql prepared-statement
我正在使用以下查询
$abilityPts = xxx;
$statement = $conn->prepare('UPDATE players SET ability = (ability + $abilityPts) WHERE id = :myPlayerId');
Run Code Online (Sandbox Code Playgroud)
但是它给出了误差..
$abilityPts column not found
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
{"error":"SQLSTATE[42S22]: Column not found: 1054 Unknown column '$abilityPts' in 'field list'"}
Run Code Online (Sandbox Code Playgroud)
您正在使用预准备语句.所以使用预备语句.使用:abilityPts和绑定$abilityPts的方式与绑定方式相同:myPlayerId.
$conn->prepare('UPDATE players SET ability = (ability + :abilityPts) WHERE id = :myPlayerId');
Run Code Online (Sandbox Code Playgroud)
通过连接创建SQL查询并在字符串中嵌入PHP变量是一种非常糟糕的做法,它可以使您的代码对SQL注入开放,这是一项严肃的业务.准备好的陈述更清晰,更安全,并且通常被社区认为是最佳做法.如果您已经在使用准备好的语句,那么表现很好,只需继续使用它们即可.
你应该做我在1.中描述的内容,但也要注意PHP 之间'和之间的区别".
' (单引号):
与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中出现时不会被扩展.
这基本上意味着以下内容:
$a = 15;
echo 'My favorite is $a.'; //My favorite is $a.
echo "My favorite is $a."; //My favorite is 5.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |