Je me demandais s'il existait une bonne approche pour créer des fonctions dans une classe afin de faciliter la création de requêtes mysql d'insertion / suppression / mise à jour.
Par exemple
Disons que j'ai un tableau contenant 12 lignes, etJe veux faire une requête d'insertion avec deux valeurs d'une autre classe. A quoi ressemblerait la fonction d'insertion? Je voudrais que cette fonction fonctionne avec n'importe quel nombre de valeurs.
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.
}
Je voudrais éventuellement exécuter la requête avec des instructions préparées, quelque chose comme:
if($stmt = $this->db->prepare($query)) {
$stmt->bind_param("ss", $email, $password);
$stmt->execute();
if($stmt->fetch()) {
$stmt->close();
return true;
}
}
Réponses:
0 pour la réponse № 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;
Il n'y a aucune raison d'utiliser le constructeur ici car toutes les données sont statiques. mais si vous le souhaitez, retirez simplement le static
du insérer une fonction et initialisez mysql comme ceci:
$mysql = new Mysql();
$mysql->insert($values, $table);