Php 转换为int而不是mysql\u real\u escape\u string安全吗

Php 转换为int而不是mysql\u real\u escape\u string安全吗,php,mysql,mysql-real-escape-string,Php,Mysql,Mysql Real Escape String,只是想知道,我的应用程序需要尽可能快,并且变量已经转换为int,所以如果可以避免的话,我也不想转义字符串 例如: $var1 = (int)$_POST['number1'] //User input; mysql_query("INSERT INTO ... $var1 .."); 这在任何情况下都安全吗?还是我也应该使用mysql\u real\u escape\u string$var1 有时我也使用md5()变量而不是转义它们,但我想这没关系。是的,它在所有情况下都是安全的,尽管您可能

只是想知道,我的应用程序需要尽可能快,并且变量已经转换为int,所以如果可以避免的话,我也不想转义字符串

例如:

$var1 = (int)$_POST['number1'] //User input;
mysql_query("INSERT INTO ... $var1 ..");
这在任何情况下都安全吗?还是我也应该使用mysql\u real\u escape\u string
$var1


有时我也使用md5()变量而不是转义它们,但我想这没关系。

是的,它在所有情况下都是安全的,尽管您可能希望检查
$\u POST['number1']
是否也是有效的整数,以避免引起注意

而且,即使你说


我只是想知道安全性,而不是太担心首选的[sic]方法和编码标准


我仍然建议您使用预先准备好的语句。

是的,这是安全的,但需要注意的是,任何无效整数的值都将转换为
0
,这可能会导致副作用

正如minitech所说,使用预先准备好的语句确实应该是一种方式,因为你不再需要担心这一点


然而,更重要的是,性能在这里并不是一个真正的问题,也不值得考虑。不管您是否转义字符串,都不会影响应用程序的性能一点(如果不是兆字节,至少不会)。过早的优化通常是浪费时间-这样的“优化”只会使代码更难阅读和理解,从长远来看这更重要。

这是安全的,但请记住,任何字符串都将转换为0,不能为null或类似的值。

正如minitech所说,良好的做法是确保检查它是否为整数。不过,使用预先准备好的语句确实会更安全,我最近开始使用PDO,不会再回去了。

我只是想知道安全性,而不是太担心首选的方法和编码标准。更好的是,让自己更新到21世纪,使用mysqli或PDO。。。强制转换为int或转义字符串将比db查询快得多,因此,如果需要速度,请关注db查询——记住,缓存准备好的语句是为了更快execution@MarkBaker:是的,谢谢,我已经准备好了。这只是一个例子,我的意思是,与其他任何转义方法相比,PHP没有编码标准,基本上是一堆黑客。您的方法很好。感谢您分享术语“过早优化”+1