值未返回

时间:2014-06-21 21:34:28

标签: php mysql pdo

我使用函数根据两个参数$request$id检索产品信息。处理请求并返回正确的数据库字段以在查询中使用。但是,信息不会被返回,但$request作为字符串。

public function productInformation($request,$id) {

    switch($request) {

        case "id":
            $request = "id";
            break;
        case "desc":
            $request = "description";
            break;
        case "slug":
            $request = "slug";
            break;
        case "parent":
            $request = "parent";
            break;
        case "thumb":
            $request = "thumb_url";
            break;
        case "image":
            $request = "image_url";
            break;
        case "visible":
            $request = "visibility";
            break;
        case "time":
            $request = "stamp";
            break;  
    }

    $connect = new dbconnect;
    $connect->query("SELECT :request FROM products WHERE id = :id");
    $connect->bind(":request",$request);
    $connect->bind(":id",$id);
    $query = $connect->single();

    return $query[$request];

}

因此,如果$request = "desc"return $query[$request]会将description作为字符串返回?我正在拨打正确的数组密钥,但我不太清楚问题是什么?

2 个答案:

答案 0 :(得分:2)

您不能绑定列名(或表名),只能绑定数据值....即,您不能绑定$request,因为它是列名

$connect->query(sprint("SELECT %s FROM products WHERE id = :id", $request));
$connect->bind(":id",$id);

答案 1 :(得分:1)

没有必要将:request放在函数bind()中,因为通过您的切换不是SQL注入的机会。因此,您可以将$request变量仅作为字符串进行查询。而且你也不能用表创建参数。