Я давно использую класс-оболочку для своих функций базы данных. Несколько лет назад я обновил его, чтобы использовать mysqli_
вместо устаревших функций mysql_
, которые сделали веб-сайт совершенным преступлением во время обновлений версии PHP.
С более недавним обновлением моей оболочки я написал класс дляподготовьте statemtnts из мульти-массива, чтобы сделать вещи немного аккуратнее.
Я так и сделал.
index.php - Файл тестирования
/* Set Parameters
i - integer
d - double
s - string
b - BLOB
*/
$params = array(
array('s' => $_GET["id"]),
array('i' => $_GET["two"])
);
$db->prepare("INSERT INTO `".$db->prefix."articles` SET `categoryID`= ? , `articleID`= ? ");
$select2 = $db->execute($params);
$db->close();
Вы также можете сбросить массив $params
с другим набором данных и еще раз $db->execute($params)
, чтобы вставить другую строку.
database.class.php
function prepare($sql) {
$this->last_query = $sql; //Save query to show later on.
$this->stmt = $this->conn->prepare($sql);
}
function close() {
$this->stmt->close();
}
function execute($params) {
$ident = '';
$parameters = '';
$vars = array();
if($this->stmt) {
foreach($params as $k => $v) {
foreach($v as $a => $b) {
$ident .= $a;
$vars[] .= $b;
$parameters .= $a.' => '.$b.'<br>'; // For MySQL error reporting
}
}
$this->stmt->bind_param( $ident , ...$vars );
$this->parameters = $parameters;
$this->stmt->execute();
$result = $this->stmt->get_result();
return $result;
}
else {
if($this->conn->error) {
$this->last_error = $this->conn->error;
$sql = trim(preg_replace('/\s+/', ' ', $sql));
$this->log_error("MySQL",$this->last_error." ☼ ".$sql);
}
}
//$data = $result->fetch_all();
}
Мои вопросы:
Замедлит ли это каким-либо образом?
Может кто-нибудьпридумать лучшее решение и держать его в чистоте? Мне нравится аккуратность размещения информации в массиве;не говорю, что это лучшее решение, но оно работает. Я не нашел хорошего решения, чтобы все было организованно.
Видите ли вы какие-либо недостатки этого маршрута?
Веб-сайт Iвсе будет работать на PHP 7.0 (или, по крайней мере, на PHP 5.7, пока я не смогу обновить их до более новой версии).