web-dev-qa-db-fra.com

Optimiser Joomla SQL Query pour stocker les données dans un tableau et transmettre la sortie du tableau au champ

J'ai construit 2 requêtes

$id = JFactory::getApplication()->input->getIn('vid');
$db = JFactory::getDbo();
$db->setQuery("SELECT `email` FROM `#__usedcar_variants` WHERE `id`='$id' LIMIT 1");
$_POST['form']['Email'] = $db->loadResult();

$id = JFactory::getApplication()->input->getIn('vid');
$db = JFactory::getDbo();
$db->setQuery("SELECT `mobile` FROM `#__usedcar_variants` WHERE `id`='$id' LIMIT 1");
$_POST['form']['Contact'] = $db->loadResult();

Cependant - cela ne semble pas être le meilleur moyen d’optimisation, dans l’idéal

  1. l'email et le mobile peuvent être collectés en une seule requête,
  2. stockez-les dans un tableau,
  3. puis assignez chaque valeur de tableau au champ correct

Quelqu'un peut aider pls dessus

1
Ruchika

Il n'y a pas besoin de plusieurs requêtes dans votre cas. Vous pouvez simplement sélectionner emailetmobile dans la table, comme suit:

$id = JFactory::getApplication()->input->getInt('vid', '');
$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select(array('email', 'mobile'))
      ->from($db->qn('#__usedcar_variants'))
      ->where($db->qn('id') . ' = ' . (int)$id)
      ->setLimit(1);
$db->setQuery($query);

$results = $db->loadObjectList();

La variable $results Est maintenant le objet qui contient les résultats.

Si vous souhaitez y accéder, procédez comme suit:

$something_1 = $results->email;
$something_2 = $results->mobile;

Note: J'ai aussi corrigé getIn avec getInt (il devrait avoir un t à la fin)

3
Lodder