結果クエリは次のとおりです。
UPDATE admin
SET t_points = t_points + COALESCE(
SELECT points
FROM sites
WHERE url = '$url',
0
)
WHERE username = '$login_session'
NULL に対して数学演算を実行すると、結果は常に NULL になります。COALESCE は、NULL でない場合は最初の値を返し、それ以外の場合は 2 番目の値を返します。
合体
ところで、変数をクエリに渡す前に、変数に mysql_real_escape_string を使用します。
$url = mysql_real_escape_string($url);
$login_session = mysql_real_escape_string($login_session);
ただし、MySQL PDO を使用することをお勧めします。ここでいくつかのドキュメントを見つけることができますPDO
パフォーマンスを向上させるには、UPDATE クエリと SELECT クエリを分離することをお勧めします (サブジェクトのように、すべての更新クエリで SELECT クエリが同じ場合にのみ機能します)。SELECT クエリの結果を変数に渡し、この変数を UPDATE で使用するだけです。
mysql_query("SET @points = COALESCE(
SELECT points
FROM sites
WHERE url = '$url',
0
)");
mysql_query("UPDATE admin
SET t_points = t_points + @points
WHERE username = '$login_session'");