准备好的语句选择PHP

准备好的语句选择PHP,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,我试图创建一个非常抽象的PDO select函数,但由于某些原因,返回了一个空数组 function listAllProducts () { return select('products', '', ''); } function select( $tableName, $property, $value ){ switch($tableName) { case "products": $tbl = 'products';

我试图创建一个非常抽象的PDO select函数,但由于某些原因,返回了一个空数组

function listAllProducts () {
    return select('products', '', '');
} 

function select( $tableName, $property, $value ){
    switch($tableName)
    {
        case "products":
            $tbl = 'products';
            break;
        case "cart":
            $tbl = 'cart';
            break;
    }
    switch($property){
        case "id":
            $property = 'id';
            break;
        case "name":
            $property = 'name';
            break;
    }

    $db = new PDO('mysql:host=localhost;dbname=ecom;charset=utf8', 'root', 'PASSWORD');
    if( strcmp($value, '') != 0 ){ //if $value is not empty
        $query = "SELECT * FROM $tbl WHERE $property = :value";
        $stmt = $db->prepare($query);
        //bind params
        $stmt->bindValue(':value', $value);

    }
    else{
        $query = "SELECT * FROM $tbl";
        $stmt = $db->prepare($query);
    }
    //execute
    try{
        $stmt->execute();
        $result = $stmt->fetchAll();
        return $result;
    }
    catch(Exception $e){
        return $e;
    }
}
有什么简单的东西我遗漏了吗

编辑:感谢您的帮助,但在添加了一个开关并从绑定参数中删除了表和列之后,我仍然得到一个空的结果集:(


编辑2:我发现了一个有点复杂的解决方案,在上面添加了它,但它现在看起来似乎正在工作!需要更多的测试。

“但是函数根本没有抛出异常或抱怨。”-添加
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_exception);
连接打开后,您会看到它正在抱怨。;)谢谢Fred-ii-!我已经从您引用的链接中添加了一些内容-但是,我回到了以空结果集开始的地方。欢迎您。我重新提出这个问题,看看现在是否有人能理解。记住,要随时准备好关于如何不能绑定表和/或列的链接。要是PDO能让我们去就好了,但这是有原因的;)如果将
If(strcmp($value,)!=0){//If$value不是空的
替换为
If($value)
代码将更干净,不需要注释。如果没有错误且函数仍返回空数组,可能数据库中没有记录?理论上很多事情可能会出错,请尝试调试“带打印”:在执行之前放入
echo$stmt->queryString
(或
error\u log$stmt->queryString
),以仔细检查发生了什么。