[英]applying Update query with subquery is inserting zero if subquery returns null row
$query1="UPDATE admin SET t_points=t_points+ (SELECT points from sites where url='$url') where username='$login_session'";
mysql_query($query1);
如果子查詢SELECT points from sites where url='$url'
返回內容的SELECT points from sites where url='$url'
則查詢工作正常。 當它不返回任何內容時,t_points中的先前值將為空。
子查詢返回null時,如何編寫更具體的代碼,以便t_point的值保持不變?
這是結果查詢:
UPDATE admin
SET t_points = t_points + COALESCE(
SELECT points
FROM sites
WHERE url = '$url',
0
)
WHERE username = '$login_session'
每當對NULL進行數學運算時,結果始終為NULL,如果COALESCE不為NULL,則返回第一個值,否則返回第二個值
順便說一句,在將變量傳遞給查詢之前,請在它們上使用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'");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.