web-dev-qa-db-ja.com

JDatabaseテーブルに特定の行が存在するかどうかを確認する方法は?

特定の行がすでにJDatabaseテーブルに存在するかどうかを確認する最良の方法は何ですか?

INSERT INTOコマンドの代わりに、行が既に存在する場合はUPDATEコマンドを実行する必要があります。

助けていただければ幸いです!

2
saibbyweb

したがって、#__usersテーブルのユーザー名SaibbywebSaibbyweb123のように更新したいとします。

行が既に存在するかどうかを確認するには、最初にselectクエリを実行する必要があります。

$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();

$resultには、ユーザー名が含まれるか、nullになります。

したがって、結果がupdateでない場合は、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();
}

お役に立てれば

1
Lodder