J'ai une question à propos de PHP Class. J'essaie d'obtenir le résultat de Mysql via PHP. Je voudrais savoir si la meilleure pratique est d'afficher le résultat dans la classe ou de stocker le résultat et le gérer en HTML.Résultat de requête PHP echo dans Class?
Par exemple, le résultat d'affichage dans la classe
class Schedule {
public $currentWeek;
function teamQuery($currentWeek){
$this->currentWeek=$currentWeek;
}
function getSchedule(){
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
$scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);
if (!$scheduleQuery){
die("database has errors: ".mysql_error());
}
while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){
//display the result..ex: echo $row['winner'];
}
mysql_close($scheduleQuery);
//no returns
}
}
Ou retourner le résultat de la requête en tant que variable et gérer en php
class Schedule {
public $currentWeek;
function teamQuery($currentWeek){
$this->currentWeek=$currentWeek;
}
function getSchedule(){
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
$scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);
if (!$scheduleQuery){
die("database has errors: ".mysql_error());
// create an array }
$ret = array();
while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){
$ret[]=$row;
}
mysql_close($scheduleQuery);
return $ret; // and handle the return value in php
}
}
Deux choses ici:
I trouvé que retourné variable en php est un peu complexe à jouer car c'est un tableau à deux dimensions. Je ne suis pas sûr de ce qu'est la meilleure pratique et je voudrais vous demander des opinions d'experts.
Chaque fois que je crée une nouvelle méthode, je dois recréer la variable de connexion $: voir ci-dessous
$ connection = mysql_connect (db_server, DB_USER, DB_PASS); if (! $ Connection) { die ("Échec de la connexion à la base de données:". Mysql_error()); }
$db_select = mysql_select_db(DB_NAME,$connection); if (!$db_select) { die("Database selection failed: " . mysql_error()); }
Il semble que redondant pour moi. Puis-je le faire une fois au lieu de l'appeler à chaque fois que j'ai besoin d'une requête? Je suis nouveau en classe php. J'espère que vous pouvez m'aider. Merci.
Je suis juste fatigué de faire face à un tableau à deux dimensions, mais je vais suivre votre suggestion. Merci beaucoup. – FlyingCat
Merci Jerry. Je suis également d'accord avec prodigitalson qu'il serait préférable d'utiliser PDO. Une autre suggestion pour s'éloigner des tableaux 2D, est de créer des classes qui correspondent aux tables de base de données, puis dès que vous obtenez le tableau 2D, vous pouvez instancier et retourner une classe avec les résultats. Cela rend le travail avec les résultats plus facile et plus standardisé, bien qu'il y ait beaucoup de travail en créant des classes supplémentaires etc. Si vous regardez dans la fonction d'extraction PDO, il peut même faire l'instanciation pour vous, sans traiter les tableaux 2D. Alternativement, regardez dans cakePHP ... trop d'options :) bonne chance :) – Jacob