我正在努力改进一个旧的系统(很久以前就写好了),在这个系统中,每个mysql查询都是通过字符串绑定的。因此,该查询的示例如下
"SELECT * FROM User WHERE id > '3'"Id列当然是bigint和PK。
mysql如何处理查询中的'3‘,其中id应该是int值?我假设它被视为字符串(由于''),因此这个值在mysql分析/优化过程中被抛入int中。我说的对吗?
//更新我可能问错了方向。有两种方法来处理它。
我只想确定第二个选择是不可能的。
发布于 2012-07-27 22:31:59
MySQL总是将字符串转换为一个数字进行比较,在本例中,这是正确的做法(它将使用列上的索引来查找值)。
如果您的列是字符串,并将其与整数常量进行比较,MySQL将将该列转换为整数,而不使用索引。
发布于 2012-07-27 22:23:32
MySQL将自动将其转换为正确的列类型。如果由于某种原因不能这样做,就会抛出错误。
在参数可能来自不安全源(用户,外部API)的任何情况下,请确保在PDO或MySQLi中使用准备好的语句。
https://stackoverflow.com/questions/11696402
复制相似问题