带有BindParam的PHP Add Interger不起作用


PHP Add Interger with BindParam not Working

我构建了获取查询和参数并执行它的函数:

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