[英]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.