2013-10-27 60 views
4

这似乎是一个非常基本的问题,但我不清楚它。在我的代码中,我有一个查询插入语句中的sql问号

"insert into CONTACTS (EMAIL, FIRSTNAME, LASTNAME, TELEPHONE) values (?, ?, ?, ?)" 

什么是'?'在这些值中,是否要获取实时值?

+0

您使用的是什么RDBMS? – ApplePie

+1

@ AlexandreP.Levasseur支持准备语句的大多数RDBMS使用?来表示占位符 – SheetJS

+0

这很好理解! – ApplePie

回答

6

这是来自一些prepared statement。在执行查询之前,这些问号将随后填入值。

+2

值得注意的是,它们存在的原因主要是出于安全原因。即SQL注入问题。 – Roger

2

在编程方面,你需要插入多个数据集到同一表 -

如果需要插入多个值的集合到数据库表,然后就没有必要准备的每次声明插入新值。你只需准备一次插入语句,然后使用这个不同的值来准备。这些'?'充当将在执行期间稍后填充的不同组值的占位符。它会带来更好的性能。

它正在使用这与数据库提示然后它基本上用于让用户在命令提示符下输入。它会提示用户插入数据。

请通过“How can I prevent SQL injection in PHP?”了解我们如何通过使用'?'来避免sql禁令。

+0

感谢大家的帮助,我很感激 – user2472968

+0

看看这个了 [Secure_Coding_SQL_Injection](http://wiki.developerforce.com/page/Secure_Coding_SQL_Injection) – user2472968