独特的php mysql查询限制1?

An *_*yee 2 php mysql

我很好奇,在一个文档中我读到它建议在所有查询上使用限制1(如果可用)包括索引和唯一列.当使用WHERE uniqueCol = val时,写入限制1是否实际上有助于查询; ?

Eli*_*Eli 6

不,在这些情况下,添加"限制1"无助于加快代码速度.相反,人们这样做的通常原因是作为"保护"因素.有两种情况可以帮助您:

  • 有时,根据您的数据库设计,您可能认为只有1个结果,但如果您选择的列实际上不是唯一列,由于某些奇怪的原因,那么如果数据库完整性,您可能会得到两个结果没有保留.我见过程序员因此在这种情况下使用限制1,只是为了确保无论如何,当他们只期待1个结果时,他们只得到1个结果,因此,它不会导致代码失败.

  • 和安全.我也看到人们提出在查询中设置限制1的想法,使SQL注入攻击更加困难.我们的想法是,如果某人确实设法进行SQL注入,那么他们只能获得"1结果".现在问题在于,在实践中,这很少有效,因为许多SQL注入攻击最终忽略了数据的"其余部分".

那么,到底呢?把它放在那里肯定不会伤到你.但是,为什么你应该总是这样做,这并不是一个坚实的理由.事实上,我自己很少这样做,只是因为你可能会说服自己的好处,而且很少.