Мені було цікаво, чи є хороший підхід до створення функцій в класі, щоб зробити його легким зробити вставки / видалення / оновлення запитів mysql.
Наприклад
Скажімо, у мене є таблиця, що містить 12 рядків, іЯ хочу зробити запит вставки з двома значеннями з іншого класу. Як буде виглядати функція вставки? Я хотів би, щоб ця функція працювала з будь-якою кількістю значень.
function addUser($email, $password) {
$values = array(
"email" => $email,
"password" => $password
);
$table = "users";
$query = $mysql->insert($values, $table);
}
function insert($values, $table) {
// what would this look like? (note: this function is within another class.
}
Я б зрештою хотів виконати запит з підготовленими виписками, наприклад:
if($stmt = $this->db->prepare($query)) {
$stmt->bind_param("ss", $email, $password);
$stmt->execute();
if($stmt->fetch()) {
$stmt->close();
return true;
}
}
Відповіді:
0 для відповіді № 1class Mysql
{
public static function insert($values, $table)
{
if(empty($values) || empty($table))
{
// Noting to do
return "";
}
$list = array();
foreach($values as $k => $v)
$list[] = "`". $k ."` = "". $v .""";
$list = implode(",", $list);
$query = "INSERT INTO `". $table ."` SET " . $list;
return $query;
}
}
$values = array
(
"email" => "my email",
"password" => "my password"
);
$table = "users";
$query = Mysql::insert($values, $table);
echo $query;
Тут немає причин використовувати конструктор, тому що всі дані статичні. але якщо ви бажаєте, просто видаліть static
від Вставити функції і ініціалізувати mysql так:
$mysql = new Mysql();
$mysql->insert($values, $table);