web-dev-qa-db-fra.com

Comment vérifier si une ligne spécifique existe dans une table JDatabase?

Quel serait le meilleur moyen de vérifier si une ligne spécifique existe déjà dans une table JDatabase?

Au lieu de INSERT INTO Command, je dois exécuter une commande UPDATE si la ligne existe déjà.

Une aide serait appréciée!

2
saibbyweb

Disons que vous souhaitez mettre à jour le nom d'utilisateur Saibbyweb dans le fichier #__users table à quelque chose comme Saibbyweb123.

Vous devrez d'abord exécuter une requête select pour voir si la ligne existe déjà:

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select($db->quoteName('username'))
      ->from($db->quoteName('#__users'))
      ->where($db->quoteName('username') . ' = '. $db->quote('Saibbyweb'));
$db->setQuery($query);

$result = $db->loadResult();

Le $result va maintenant contenir le nom d'utilisateur ou être null.

Donc, vous pouvez maintenant exécuter votre requête update si le résultat n'est pas null:

if ($result !== null)
{
    $query  = $db->getQuery(true);
    $query->clear();

    $fields     = array($db->quoteName('username') . ' = ' . $db->quote('Saibbyweb123'));
    $conditions = array($db->quoteName('username') . ' = ' . $db->quote($result));

    $query->update($db->quoteName('#__users'))->set($fields)->where($conditions);
    $db->setQuery($query);
    $db->execute();
}

J'espère que cela t'aides

1
Lodder