我构建了获取查询和参数并执行它的函数:
public static function doQuery($Query, $Params = array())
{
$psth = self::$dbh->prepare($Query);
foreach ($Params as $param => $value)
{
if (!is_numeric($value)){
echo "$value is not numeric 'n";
$psth->bindParam($param, $value, 'PDO::PARAM_STR);
}
else{
echo "$value is numeric 'n";
$psth->bindParam($param, $value, 'PDO::PARAM_INT);
}
}
$psth->execute();
return $psth;
}
当我运行这个查询时:SELECT * FROM products WHERE Category = :CatId LIMIT 4
没有限制参数(CatId参数很好)它正在工作,但是当我像这样使用我的功能时:
$limit = 4;
$SParamsQuery = array(
":CatId" => $CatId,
":x" => 4
);
$SQuery = self::doQuery('SELECT * FROM products WHERE Category = :CatId LIMIT :x',$SParamsQuery);
这不起作用。
有什么办法解决的吗?
转储参数:
SQL: [58] SELECT * FROM `products` WHERE `Category` = :CatId LIMIT 4
Params: 1
Key: Name: [6] :CatId
paramno=-1
name=[6] ":CatId"
is_param=1
param_type=1
谢谢哈伊姆。
如果更换,它可能会起作用
$psth->bindParam($param, $value, 'PDO::PARAM_INT);
带有
$psth->bindParam($param, $value, PDO::PARAM_INT); //without backslash