Php 如何在()中为mysql类型转换

Php 如何在()中为mysql类型转换,php,mysql,performance,Php,Mysql,Performance,我正在构建一个php脚本,创建一个查询字符串,如 $products = array(873, 874, 875); $sql = 'select * from product_thumbnails where product in (' . implode($products, ', ') . ')'; 这会创建一个类似 'select * from product_thumbnails where product in (873, 874, 875)' product的数据类型为int。

我正在构建一个php脚本,创建一个查询字符串,如

$products = array(873, 874, 875);
$sql = 'select * from product_thumbnails where product in (' . implode($products, ', ') . ')';
这会创建一个类似

'select * from product_thumbnails where product in (873, 874, 875)'
product的数据类型为int。in()函数的参数是否被视为字符串?如果是这样的话,mysql将不得不比较int和string,因此随着应用程序的增长,可能会导致查询速度变慢。有没有办法对参数进行类型转换或告诉mysql将其视为int?还是mysql足够聪明,可以自己处理这个问题

编辑

非常感谢Jerodev和jilesh给出的答案-Mysql将把它们当作int。如果您想要一个字符串,只需在查询字符串中使用引号,如

' in ("stringtype", "stringtype") '

在MySQL语法中。。。需要数字时,可以提供数字
123
或字符串
“123”


当需要一个字符串时,您可以提供其中一个,但是当将
VARCHAR
与一个不带引号的数字(
123
)进行比较时,需要额外的努力将
VARCHAR
转换为数字,这通常会给您错误的答案:
“abc”
被视为
0
,或者至少是令人困惑的:
“123abc”
被视为
123

否,这些被视为整数,字符串将介于
之间。另外,是的,mysql足够聪明,可以自己进行转换。是的,如果你在中使用,并且有字符串,那么你必须像从product_缩略图中选择*,其中product in('1','2','3')。是的,mysql中有函数名CAST(),您可以在其中为任何值分配数据类型。但在这里,这对于integer是很好的,您使用查询的方式与使用查询的方式相同,即:从product_缩略图中选择*,其中product位于('873','874','875')。这东西也很好用。