Bonjour,
J'ai créé une fonction dont la mission est de s'assurer qu'une connexion à la base de données est en cours et qui l'établit si ce n'est pas le cas. Cette fonction, je l'appelle avant chaque bloc prepare - bind_param éventuel - execute - free - close. Est-ce que cette manière de faire est pertinente, à votre avis ?
Ensuite, à chaque fois que je veux faire une requête, cela ressemble à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function dbconnect(){ // Define connection as a static variable, to avoid connecting more than once static $db; if (!isset($db)) { mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); try{ $db = new mysqli("localhost", USERNAME, PASSWORD, DATABASE); // sont des constantes définies plus haut $db->set_charset("utf8"); $db->query("SET NAMES 'utf8'"); $db->query("SET collation_connection = 'utf8_roman_ci';"); $db->query("SET character_set_client=utf8"); $db->query("SET character_set_connection=utf8"); $db->query("SET character_set_results=utf8"); date_default_timezone_set("Europe/Brussels"); } catch(Exception $e) { echo json_encode(array( "msg" => "Erreur système. Veuillez contacter le support.", "error" => $e->getMessage() ) ); exit('Erreur système. Veuillez contacter le support.'); } } return $db; }
Cela me paraissait bien mais j'attrape parfois une erreur du type "Commands out of sync; you can't run this command now" sur la commande execute(). Pourquoi ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 try{ $db = dbconnect(); $query = $db->prepare($q); $query->bind_param("ss", $param1, $param2); if (!$query->execute()) throw new Exception("Execute error."); // Free result set $query->free(); $query->close(); } catch(Exception $e) { echo json_encode(array( "msg" => "Erreur système. Veuillez contacter le support.", "error" => $e->getMessage() ) ); exit('Erreur système. Veuillez contacter le support.'); }
Est-ce qu'il y a quelques chose qui n'est pas catholique dans ce que vous voyez ?
Merci pour votre aide...
T.
Partager