簡體   English   中英

Select 同時刪除和插入 PHP 和 SQL 服務器

[英]Select delete and insert at the same time PHP and SQL Server

我想要做的是首先 Select 如果 Cardindex 列的值為 0.1 和 2。如果這些值存在則具有相同的 UserIndex (id)(3 是強制性的),然后我們繼續刪除 3 本身,然后插入同一個表一個新的值。 只要滿足前面的條件,不滿足則不插入。

在我展示的第一個查詢運行良好的查詢中,它刪除了數據 0、1、2,直到一切都完美,但是在插入新行時它會這樣做,但不考慮先前的條件。 如果萬一它沒有被滿足,它無論如何都會插入它。

看起來很容易,但我已經不可能繼續前進了,對不起我的英語不好

圖像描述

include('Login/Conexion.php');
$id = $_SESSION['id'];

$query = "with cte as (SELECT count(*) over() cnt FROM CardData where UserIndex = $id and CardIndex in (0, 1, 2)) delete from cte where cnt = 3";
$resultados = sqlsrv_query($conn,$query);

if($resultados){
    $insert = sqlsrv_query($conn,"INSERT INTO CardData (UserIndex, CardIndex, Mode ) VALUES ('$id', '5' ,'1')");
    }
    else{
        echo 'Error';
        }

sqlsrv_query()僅在出現錯誤時返回FALSE 您的邏輯假設如果第一個查詢沒有匹配項,則$resultados將為 false,但這是不正確的。

您可以嘗試檢查受影響的行數:

$query = "with cte as (SELECT count(*) over() cnt FROM CardData where UserIndex = $id and CardIndex in (0, 1, 2)) delete from cte where cnt = 3";
$resultados = sqlsrv_query($conn,$query);

if( sqlsrv_num_fields($resultados) ) {
    $insert = sqlsrv_query($conn,"INSERT INTO CardData (UserIndex, CardIndex, Mode ) VALUES ('$id', '5' ,'1')");
    }
else {
   echo 'Error';
}

解決了:

if($fila = sqlsrv_rows_affected($resultados)) { 
 $insert = sqlsrv_query($conn,"INSERT INTO CardData (UserIndex, CardIndex, Mode ) VALUES ('$id', '5' ,'1')");
}
else {
echo 'Error';
}

暫無
暫無

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

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