如何在PHP中更新单行?

时间:2011-10-10 06:52:57

标签: php mysql row sql-update

我有2个按钮,批准并拒绝更新预订状态。 我试图将值传递给approve_booking.php时迷路了。 根据bookingID不知道如何更新单行。需要编码帮助!!!

的index.php

<head>
<script src="jquery-latest.js" type="text/javascript"></script>
<script src="jquery.tablesorter.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#myTable").tablesorter({widgets: ['zebra']});
});

$(document).ready(function() 
{ 
    $("#myTable").tablesorter(); 
} 
);

$(document).ready(function() 
{ 
    $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} ); 
} 
);
</script>
<link href="style.css" rel="stylesheet" type="text/css">
<link href="stylelogin.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" method="post" action="approve_booking.php" >
<?php

$db = new mysqli("localhost", "root", "", "eventdb");

$query = "SELECT customer.companyName, customer.contactName,eventinfo.eventTitle,boothAlias,date, testbook.bstatus, testbook.username, bookingID  from eventinfo, testbook, customer where testbook.username=customer.username AND testbook.eventID=eventinfo.eventID";

$result = $db->query($query, MYSQLI_STORE_RESULT);

$o = '<table id="myTable" class="tablesorter" width="660px"><thead><tr><th>Company Name</th><th>Contact Name</th><th>Event</th><th>Booth</th><th>Date</th><th>Status</th></tr></thead><tbody>';

while(list($companyName, $contactName, $eventTitle, $boothAlias, $date, $bstatus,$bookingID) = $result->fetch_row()) {

if($bstatus==0){
    $status="Pending";
}else if($bstatus==1){
    $status="Successful";
}else{
    $status="Reject";
}


$o .= '<tr><td width="120px">'.$companyName.'</td><td width="120px">'.$contactName.'</td><td width="180px">'.$eventTitle.'</td><td width="70px">'.$boothAlias.'</td><td width="170px">'.$date.'</td><td width="70">'.$status.'</td><td width="100"><input width="100px" name="APPROVED" type="submit" id="APPROVED" value="Approve"> <input width="100px" name="REJECT" type="submit" id="REJECT" value="Reject"></td></tr>';
}

$o .= '</tbody></table>';

echo $o;
?>
</form>
</body>

approve_booking.php

<?php

mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("eventdb") or die (mysql_error());

if(isset($_POST['APPROVED']))
    {

        $query2 = "UPDATE testbook SET bstatus ='0' WHERE bookingID='$_POST[booking]'";
            $result2 = @mysql_query($query2);
    }


if (isset($_POST['REJECT']))
    {
        $query3 = "UPDATE testbook SET bstatus ='2' WHERE bookingID='$_POST[booking]'";
            $result3 = @mysql_query($query3);

    }



?>

http://i.stack.imgur.com/0KGLB.jpg

4 个答案:

答案 0 :(得分:1)

嗨,我没有在该表单中看到任何表单字段。 创建一个名为“booking”的隐藏字段

  <input type="text" name="booking" value="<?php echo $bookingID; ?>" >

答案 1 :(得分:1)

您是否已将bookingID传递给php?

<input type="hidden" name="booking" id="booking">

onclick函数添加到两个子句中,以将所选行的bookingid保存到隐藏的输入中。

onclick=$(\"#booking\").val('.$bookingID .');

答案 2 :(得分:0)

如果预订ID是你的auto_increment / primary key,那么它只更新单行,但如果不是,则在WHERE条件下使用你的主键,这样它只能找到并更新1行。

答案 3 :(得分:0)

这可能会导致您的问题。

snip
        $query3 = "UPDATE testbook SET bstatus ='2' WHERE bookingID='$_POST[booking]'";
/snip

将其更改为:

snip
        $query3 = "UPDATE testbook SET bstatus ='2' WHERE bookingID='{$_POST['booking']}'";
snip

请注意,将变量直接回显到像这样的查询字符串中是非常不安全的。我建议在将变量放入之前先检查变量。

无论如何,你的问题是变量$_POST['booking']的值可能没有传递给查询。它传递了字符串$_POST['booking']