# Data Manipulation

## `perform()`

Für alle SQL Anweisung außer `SELECT`. Die Methode gibt nichts zurück. Sollte die Ausführung 
fehlschlagen, so wird eine Exception geworfen.

```php
$sql = 'UPDATE foo SET bar = :bar WHERE id = :id';

$values = [
    'bar' => 'baz',
    'id' => 123,
];

$db->perform($sql, $values);
```

## `fetchAffected()`

Für `INSERT`, `REPLACE`, `UPDATE` und `DELETE` Anweisungen. Gibt die Anzahl der betroffenen Datensätze zurück.

```php
$sql = 'UPDATE foo SET bar = :bar WHERE 1';

$values = [
    'bar' => 'baz',
];

echo $db->fetchAffected($sql, $values);
```

###### Ausgabe

```
42
```

## `lastInsertId()`

Gibt den zuletzt erzeugten Auto-Increment-Wert zurück.

```php
$sql = 'INSERT INTO foo (id, bar) VALUES (NULL, :bar)';

$values = [
    'bar' => 'baz',
];

$db->perform($sql, $values);
// $db->fetchAffected($sql, $values); // Alternative 

echo $db->lastInsertId();
```

###### Ausgabe
```
123
```

## Multiple-Row-Insert

```php
$sql = 'INSERT INTO foo (id, bar) VALUES (NULL, :bar1, :baz1), (NULL, :bar2, :baz2), (NULL, :bar3, :baz3)';

$values = [
    'bar1' => 'bar',
    'baz1' => 'baz',
    'bar2' => 'barbar',
    'baz2' => 'bazbaz',
    'bar3' => 'barbarbar',
    'baz3' => 'bazbazbaz',
];

$db->perform($sql, $values);
// $db->fetchAffected($sql, $values); // Alternative; Rückgabe wäre `3` 
```