нет полной защиты от инъекций
оптимизатору придется готовить план для каждого запроса, т.к. они будут все разные, если даже отличаются только данные.
Где ещё? Например, в PostgreSQL не работает.
Речь не про обработку данных в соответствии с бизнес-логикой. Речь о том, что одно дело когда у вас данные уже внутри сущностей, с которыми предстоит работать, другое дело, когда они лежат все в одном массиве и нужно ещё разбирать, что к чему относится.
Кроме того, работать таким образом будет только в MySQL
Да и выигрыш по производительности очень сомнителен
А с учётом что нужно будет эту кучу ещё и разобрать в отдельные сущности, то производительность скорее всего будет отрицательная.
Т.е. минусов гораздо больше, а мы даже ещё не говорили о читаемости, скорости разработки, расширяемости и т.д.
class Sql {
private $mysqli;
public function __construct($host, $user, $password, $database) {
$this->mysqli = new mysqli($host, $user, $password, $database);
}
public function fetch($query) {
$results = [];
if ($this->mysqli->multi_query($query)) {
do {
if ($stmt = $this->mysqli->store_result()) {
$result = [];
while($row = $stmt->fetch_object()) {
$result[] = $row;
}
$results[] = $result;
}
}
while($this->mysqli->next_result());
}
return $results;
}
}
$sql = new Sql("localhost", "root", "root", "CODINGGROUND");
$result = $sql->fetch("
SELECT * FROM users;
SELECT * FROM users;
SELECT * FROM users;
");
print_r($result);