簡體   English   中英

過濾掉未設置的mysqli_query

[英]Filter out unset mysqli_query

我正在嘗試根據變量值動態設置一些sql。

所以我有

$somevariable = "somevalue" I set some $sql and $a1 = mysqli_query($con, $sql1)
$somevariable2 = "somevalue2" I set some $sql2 and $a2 = mysqli_query($con, $sql2)

等等..

現在我想運行這些查詢,如果其中任何一個為FALSE,我想回滾

這就是我所做的。

mysqli_autocommit($con, FALSE);
if ($a1 and $a2 and $a3 and $a4 and $a5 and $a6)
{
mysqli_commit($con);
}
else
{
mysqli_rollback($con);
}

現在我的問題是$ a可以是任何數字,並且介於兩者之間的任何數字也可能不僅僅像$ a1和$ a7那樣,或者類似的東西。

因此,如果我說($ a1和$ a2以及$ a3和$ a4以及$ a5和$ a6),則不會提交,因為其中一個變量不存在。

如果我給出($ a1或$ a2或$ a3或$ a4或$ a5或$ a6),它將僅運行第一個查詢並提交。

因此,在我給出“ and”進行提交之前,如何給出盡可能多的變量並過濾掉未設置的變量

我努力了

$tmp = array($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10); 
$filtered = array_filter($tmp); 
$one = implode("and", $filtered)
if ($one)
{
mysqli_commit($con);
}
else
{
mysqli_rollback($con);
}

但它也不行..任何想法? 謝謝。

您無需為每次交互使用顯式變量,除非您希望以后使用它們。 您可以使用[]將結果追加到數組中,以免留下未分配的成員,並使用array_reduce進行求值。

function bool_and($a,$b) { return $a and $b; }
$result_array = array();
$result_array[] = mysqli_query($con, $sql1)
$result_array[] = mysqli_query($con, $sql2)
$result_array[] = mysqli_query($con, $sql7)

if (array_reduce($result_array,"bool_and",true))
{
    mysqli_commit($con);
}
else
{
    mysqli_rollback($con);
}

暫無
暫無

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

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