レコードを選択した後、そのレコードに対してUPDATEクエリを実行したい。
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query
->select(array('p.*', 'u.id', 'u.name' ,'pr.*'))
->from($db->quoteName('#__chichi_photos', 'p'))
->join('LEFT', $db->quoteName('#__users', 'u') . ' ON (' . $db->quoteName('p.userID') . ' = ' . $db->quoteName('u.id') . ')')
->join('LEFT', $db->quoteName('#__chichi_profile', 'pr') . ' ON (' . $db->quoteName('pr.userID') . ' = ' . $db->quoteName('u.id') . ')')
->where($db->quoteName('p.id') .'=' . $photoID .'');
$db->setQuery($query);
$results = $db->loadRow();
結果にIDがある#__chichi_photosテーブルのフィールドでUPDATEクエリを実行し、可能であれば、単一のクエリステートメントでそれを実行します。
基本的に私がしたいことは、フィールドが選択された後にフィールドの「ヒット」列を更新することです。ありがとうございました。
最初のクエリからデータをクリアする$query->clear();
を使用して、次のようにupdate
クエリを使用できます。
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select(array('p.*', 'u.id', 'u.name' ,'pr.*'))
->from($db->quoteName('#__chichi_photos', 'p'))
->join('LEFT', $db->quoteName('#__users', 'u') . ' ON (' . $db->quoteName('p.userID') . ' = ' . $db->quoteName('u.id') . ')')
->join('LEFT', $db->quoteName('#__chichi_profile', 'pr') . ' ON (' . $db->quoteName('pr.userID') . ' = ' . $db->quoteName('u.id') . ')')
->where($db->quoteName('p.id') .'=' . $photoID .'');
$db->setQuery($query);
$results = $db->loadRow();
// SECOND PART OF THE QUERY
$query = $db->getQuery(true);
$query->clear();
$fields = array(
$db->quoteName('hits') . ' = ' . $db->quote($results[0]),
);
$conditions = array(
$db->quoteName('id') . ' = ' . $db->quote($results[1])
);
$query->update($db->quoteName('#__chichi_photos'))
->set($fields)
->where($conditions);
$db->setQuery($query);
try
{
$db->execute();
}
catch (RuntimeException $e)
{
$e->getMessage();
}
おそらく変更する必要があります$results[0]
および$results[0]
最初のクエリが出力するインデックス。
お役に立てれば
投稿されたUPDATE
コーディングの試みがないため、目的は少し不明確ですが、#__chichi_photos
値を使用して$photoID
テーブルのヒットカウントを「インクリメント」することを意図していると思います。
$photoID = 1; // whatever you set it to be
$db = JFactory::getDBO();
try {
$query = $db->getQuery(true)
->update("#__chichi_photos")
->set("hit = hit + 1") // increment the row's value
->where("id = " . (int)$photoID); // cast as int for security/stability
echo $query->dump(); // show yourself the query being run
$db->setQuery($query);
$db->execute();
if ($affrows = $db->getAffectedRows()) { // check for "logical" success
echo "Incremented hit count for photo# $photoID";
} else { // catch "logical" failure
echo "Failed to increment hit count for photo# $photoID";
}
} catch (Exception $e) { // catch any syntax failures
echo "Query Syntax Error: " , $e->getMessage(); // never show getMessage() to public
}