Как обновить и удалить MySQL Table в PHP, используя этот метод? - PullRequest
0 голосов
/ 05 сентября 2018

Используя курс laracasts «The PHP Practitioner», я узнаю, что могу вставить в таблицу, используя следующий формат:

public function insert($table, $parameters)
{
    $sql = sprintf(
        'insert into %s (%s) values (%s)',
        $table,
        implode(', ', array_keys($parameters)),
        ':' . implode(', :', array_keys($parameters))
    );

    try {
        $statement = $this->pdo->prepare($sql);

        $statement->execute($parameters);
    } catch (\Exception $e) {
        //
    }
}

Как мне обновить и удалить данные, используя этот метод, просто передавая имя таблицы и массив в качестве аргументов в PHP?

1 Ответ

0 голосов
/ 05 сентября 2018

Я думаю, это то, что вы ищете:

public function delete($table, $where = [])
{
    $_where = array_reduce(array_keys($where), function($prev,$key){
        return $prev . ' AND ' . $key . '=:' . $key;
    },'1=1');
    $sql = sprintf(
        'delete from %s where %s',
        $table,
        $_where
    );

    try {
        $statement = $this->pdo->prepare($sql);

        $statement->execute($where);
    } catch (\Exception $e) {
        //
    }
}


public function update($table, $values, $where=[]){
    $_where = array_reduce(array_keys($where), function($prev, $key){
        return sprintf("%s AND %s=:%s", $prev, $key, $key);
    },'1=1');
    $_set = array_reduce(array_keys($values), function($prev, $key){
        return sprintf("%s,%s=:%s", $prev, $key, $key);
    }, '');
    $sql = sprintf(
        'update %s set %s where %s',
        $table,
        $_set,
        $_where
    );
    try {
        $statement = $this->pdo->prepare($sql);

        $statement->execute($where);
    } catch (\Exception $e) {
        //
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...