OOPHP PDO查询对象内部&关于约束

时间:2016-08-20 17:30:41

标签: php pdo

好的,所以我有这个代码,非常适合保存通过它的视频对象。我把它放在一起是因为有人说我不应该直接在Video类函数中进行查询,我应该有一个专门用于与数据库进行交互的外部类。

class VideoHandler {
    private $myObject;

    function __construct($object) {
    $bind = array();
    $bind[':src'] = $object->src;
    $bind[':title'] = $object->title;
    $bind[':desc'] = $object->desc;
    $bind[':cat_id'] = $object->cat_id;
    $bind[':game_id'] = $object->game_id;
    $this->myObject = $object;
    }

    function save($conn) {
        $sql = "INSERT INTO videos (`src`, `title`, `desc`, `cat_id`, `game_id`) VALUES (:src, :title, :desc,  cat_id, :game_id)";
        $query = $conn->prepare($sql);
        $query->execute($this->myObject);
        return "Video Saved!";
    }

}

所以保存这一切都很好,但是我希望能够获得相关视频,获取热门视频,更新视频观看次数等。

因此,假设我想用视频添加视频:

function updateViews($conn) {
    $sql = "UPDATE videos SET views=(:views+1) WHERE id=:id";
    $query = $conn->prepare($sql);
    $query->execute($this->myObject);
}

它不起作用,因为有太多的绑定变量(我知道我没有视图或id有界,但无论如何这都是无关紧要的)。

有没有更好的方法来构建VideoHandler,以便能够在不重复大量代码的情况下执行这些多功能?我认为的两个解决方案对我来说似乎不对。我想我可以在每个函数的构造函数中有多个绑定数组,以及存储数组的多个属性。

所以$ bind_save,$ bind_views,$ bind_related等。我只放入对象的各个部分,用于每个数组中的不同查询。

或者将对象传递给函数本身并将其中的所有内容绑定,但这似乎也不正确。

似乎很奇怪,我不能只将$ bind [':id']和$ bind [':views']添加到构造函数的数组中,只使用我上面发布的代码。也许我错过了什么,但为什么必须在PDO执行中使用每个数组?为什么我不能只拥有完整的数组,只使用$ sql查询中使用的数组?

无论如何,有没有比我提到的方式更好的方法呢?我觉得必须有。

由于

0 个答案:

没有答案