簡體   English   中英

如何從數據庫表中獲取行數並使用 UPDATE 查詢將總行數插入到不同表的列中

[英]How can I fetch the number of rows from a database table and insert the total rows into columns of a different table using UPDATE query

我的數據庫中有一個表,我想在其中跟蹤我網站中每個上傳文件的下載次數。 成功下載文件后,我已成功插入用戶詳細信息。 每個下載文件的用戶 ip 地址都保存在我的數據庫 tbl (All_downloads) 和用戶下載的文件名中。 我有一個不同的表(歌曲),我在其中存儲了所有上傳的文件,並在表名“DOWNLOAD COUNTER”中添加了一個列,現在我想從 tbl ALL_downloads 獲取下載總數並將總數插入到 tbl“songs "(我希望它按歌曲名稱分組)。

if (isset($_GET['name']) && basename($_GET['name']) ==  $_GET['name']) {
    $name = $_GET['name'];
    $userip = $_SERVER['REMOTE_ADDR'];
    $query = "SELECT * FROM songs_download_counter WHERE name='$name' && ip='$userip'";
    $result = mysqli_query($con,$query);
    if($result->num_rows==0){
        $insertquery="INSERT INTO songs_download_counter SETip='$userip', name='$name'";
        mysqli_query($con,$insertquery) or die (mysqli_error($con));
    } else {
        $row=$result->fetch_assoc();
        if(!preg_match('/'.$userip.'/i', $row['ip'])) {
            $newip = $_SERVER['REMOTE_ADDR'];
            $updatequery="UPDATE songs_download_counter SET ip='$newip', name='$name' WHERE name='$name'";
            mysqli_query($con,$updatequery) or die (mysqli_error($con));

        }
    }

獲取計數的基本查詢是:

SELECT count(*)
FROM songs_download_counter
GROUP BY name

更新查詢看起來像這樣,具體取決於您的歌曲表的確切名稱:

UPDATE
    songs
SET
    download_counter =
        (
        SELECT count(*)
        FROM songs_download_counter d
        WHERE d.name = songs.name
        )

請參閱此處進行一些討論: 在 Sql 服務器中使用子查詢更新查詢

另請注意:您最好為每首歌曲名稱設置一個唯一 ID,並將其用於匹配,而不是名稱的文本。 隨着數據庫的增長,名稱匹配可能會在以后為您帶來一些奇怪的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM