什么是PHP中的$ stmt

时间:2014-11-23 08:40:42

标签: php mysqli

$ stmt究竟是什么?它的目的是什么?它代表什么..

我正在使用准备语句的教程,并在手册中查找stmt: http://php.net/manual/en/class.mysqli-stmt.php

并且看到它是一个类#34;代表一个准备好的语句" - 我猜是一个准备好的sql语句,你将一个变量插入。虽然我不知道这个id如何将sql语句存储为字符串,然后在需要时操作字符串以添加变量?

3 个答案:

答案 0 :(得分:9)

$stmt”显然(我认为)代表“陈述”。作为变量名称,它是任意的,您可以将该变量命名为您想要的任何名称。 $stmt只是习惯性的。

准备好的声明本身就是数据库功能。数据库本身分两步执行查询:首先是带占位符的查询结构,其次是填充占位符的数据。 PHP端的语句对象代表了这种分离,并为您提供了一个句柄,表示SQL服务器端的预准备语句。

这种分离的关键在于,由于错误地转义任意字符串值,因此不存在SQL注入问题;如果您多次重复使用该预准备语句,它对性能也很有用。

答案 1 :(得分:2)

使用语句比将变量插入纯SQL字符串要安全得多。通过使用语句可以防止SQL注入。看看:

How does the SQL injection from the "Bobby Tables" XKCD comic work?

&安培;

How can I prevent SQL injection in PHP?

答案 2 :(得分:2)

$ stmt究竟是什么?它的目的是什么?

它是一个变量并存储一个值

人们确实将它用于声明 - 其他人使用变量名称

更具想象力