$ stmt究竟是什么?它的目的是什么?它代表什么..
我正在使用准备语句的教程,并在手册中查找stmt: http://php.net/manual/en/class.mysqli-stmt.php
并且看到它是一个类#34;代表一个准备好的语句" - 我猜是一个准备好的sql语句,你将一个变量插入。虽然我不知道这个id如何将sql语句存储为字符串,然后在需要时操作字符串以添加变量?
答案 0 :(得分:9)
“$stmt
”显然(我认为)代表“陈述”。作为变量名称,它是任意的,您可以将该变量命名为您想要的任何名称。 $stmt
只是习惯性的。
准备好的声明本身就是数据库功能。数据库本身分两步执行查询:首先是带占位符的查询结构,其次是填充占位符的数据。 PHP端的语句对象代表了这种分离,并为您提供了一个句柄,表示SQL服务器端的预准备语句。
这种分离的关键在于,由于错误地转义任意字符串值,因此不存在SQL注入问题;如果您多次重复使用该预准备语句,它对性能也很有用。
答案 1 :(得分:2)
使用语句比将变量插入纯SQL字符串要安全得多。通过使用语句可以防止SQL注入。看看:
How does the SQL injection from the "Bobby Tables" XKCD comic work?
&安培;
答案 2 :(得分:2)
$ stmt究竟是什么?它的目的是什么?
它是一个变量并存储一个值
人们确实将它用于声明 - 其他人使用变量名称
更具想象力