Php 数组值与数据库值匹配时如何重定向页面
从post获取变量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
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;
根据更新的代码片段,您需要更改代码中的几项内容,例如:
- 按以下方式更改您准备的声明:
这样,如果($Seats===$cat&&$status===='Hold')条件语句或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(); } } } } }
语句,则不必使用此而($stmt->fetch()){…
- 绑定结果后,只需执行以下操作:
$stmt = $con->prepare("SELECT * FROM fistevent WHERE `Event_Id`=? AND `TicketType`=? AND `seats`= ? AND status='Hold'") or die($con->error);
...
$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条件下一样重定向页面。否则它工作正常。@rahulelse
块不会重定向用户,除非您在else
部分中明确提到头(…);退出();
。话虽如此,我在回答中也更新了else
部分。请使用更新后的代码片段测试您的应用程序。