Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组值与数据库值匹配时如何重定向页面_Php_Sql_Database - Fatal编程技术网

Php 数组值与数据库值匹配时如何重定向页面

Php 数组值与数据库值匹配时如何重定向页面,php,sql,database,Php,Sql,Database,从post获取变量 if (isset($_POST['finalSeats'])) { 从最后一页获取数组 $TicketType =$_POST['Tickettype']; $seatS=$_POST['finalSeats']; $EventId=$_POST["Eventid"]; $cats = array_filter(array_map('trim', explode(',', $seatS))); $sqlData = array(); 使用foreach逐个获取值 $T

从post获取变量

if (isset($_POST['finalSeats']))
{
从最后一页获取数组

$TicketType =$_POST['Tickettype'];
$seatS=$_POST['finalSeats'];
$EventId=$_POST["Eventid"];
$cats = array_filter(array_map('trim', explode(',', $seatS)));
$sqlData = array();
使用foreach逐个获取值

$TicketType =$_POST['Tickettype'];
$seatS=$_POST['finalSeats'];
$EventId=$_POST["Eventid"];
$cats = array_filter(array_map('trim', explode(',', $seatS)));
$sqlData = array();
绑定结果

foreach($cats as $key => $cat ) {
$stmt = $con->prepare("SELECT * FROM fistevent WHERE `Event_Id`=? AND `TicketType`=? AND `seats`= ?") or die($con->error);
$stmt->bind_param("sss",$EventId , $TicketType,$cat);
$stmt->execute();
$stmt->store_result();
$stmt-> bind_result($id,$Event_Id,$TicketType,$row_name,$seats,$Status);
while($stmt->fetch())
{
$data[] = array($id,$Event_Id,$TicketType,$row_name,$seats,$Status);
$Tickettype=$TicketType;
$Rowname=$row_name;
$Seats=$seats;
$status=$Status;
比较数组值和数据库值

foreach($cats as $key => $cat ) {
$stmt = $con->prepare("SELECT * FROM fistevent WHERE `Event_Id`=? AND `TicketType`=? AND `seats`= ?") or die($con->error);
$stmt->bind_param("sss",$EventId , $TicketType,$cat);
$stmt->execute();
$stmt->store_result();
$stmt-> bind_result($id,$Event_Id,$TicketType,$row_name,$seats,$Status);
while($stmt->fetch())
{
$data[] = array($id,$Event_Id,$TicketType,$row_name,$seats,$Status);
$Tickettype=$TicketType;
$Rowname=$row_name;
$Seats=$seats;
$status=$Status;

根据更新的代码片段,您需要更改代码中的几项内容,例如:

  • 按以下方式更改您准备的声明:

    else
    {
    $seatS=$_POST['finalSeats'];
    $Eventid=$_POST["Eventid"];
    $_SESSION['Eventid']=$Eventid;
    $cats = array_filter(array_map('trim', explode(',', $seatS)));
    $stmt = $con->prepare('UPDATE fistevent SET `Status`="Hold" where `Event_Id`=? AND `seats`= ? ') or die($con->error);
    $stmt->bind_param("ss", $_POST['Eventid'], $cat);
    foreach($cats as $key => $cat ) {
    $stmt->execute();
    } 
    }
    
    }
    }
    }
    
    这样,如果($Seats===$cat&&$status===='Hold')条件语句或
    而($stmt->fetch()){…
    语句,则不必使用此

  • 绑定结果后,只需执行以下操作:

    $stmt = $con->prepare("SELECT * FROM fistevent WHERE `Event_Id`=? AND `TicketType`=? AND `seats`= ? AND status='Hold'") or die($con->error);
    
解决方案: 根据下面的对话,要求是:如果数组(E4、E5、E6)已经存在于数据库中,并且它们的状态为hold,并且在下一轮中有人选择(E3、E5、E7)(E5在数据库中,并且相应的状态为hold),则页面应该被重定向,并且没有来自(E3、E5、E7)的值数组将被更新。仅当数组值是新的且未保留时,表才会被更新。下面是解决方案代码段

...
$stmt->bind_result($id,$Event_Id,$TicketType,$row_name,$seats,$Status);
if($stmt->num_rows){
    header("Location: selection.php");
    exit();
}else{
    $seatS=$_POST['finalSeats'];
    $Eventid=$_POST["Eventid"];
    $_SESSION['Eventid']=$Eventid;
    $cats = array_filter(array_map('trim', explode(',', $seatS)));
    $stmt = $con->prepare('UPDATE fistevent SET `Status`="Hold" where `Event_Id`=? AND `seats`= ? ') or die($con->error);
    foreach($cats as $cat ) {
        $stmt->bind_param("ss", $Eventid, $cat);
        $stmt->execute();
    } 
}

@rahul我已经更新了我的答案,请查看更新(1)我的答案的一部分。希望这将解决您的问题。先生,由Rïsh Kümar提供的答案是很好的。但是有一个小问题,循环不会进入if part。它只进入else part。如果您在其中提供帮助,您可以更新您的answer@rahul这就是重点,使用
while()没有意义
在代码中循环。是否集成了代码片段(在更新(1)部分中给出)在您的应用程序中?现在是否有任何东西不起作用?先生,您的代码不起作用,它也没有更新记录。但是,第二个答案是更新记录,并检查数组值是否与数据库值匹配。在这段代码中,只有一个问题是,在更新记录后,它会像在if条件下一样重定向页面。否则它工作正常。@rahul
else
块不会重定向用户,除非您在
else
部分中明确提到
头(…);退出();
。话虽如此,我在回答中也更新了
else
部分。请使用更新后的代码片段测试您的应用程序。