带有WHILE循环和数组的PHP Update语句

时间:2017-11-10 07:42:17

标签: php mysql mysqli

我的更新声明无效。它显示" RECORD UPDATED"但不更新表格。这是代码,请帮忙。

<?php
$db=mysqli_connect("localhost","root","")or die("Connection error");
mysqli_select_db($db,"suhaib")or die("dbase error");

创建关联数组并运行WHILE循环

<?php
if(isset($_GET['edit'])){
$sql=$db->query("SELECT * FROM forma");
while($result=mysqli_fetch_assoc($sql)){
?>
<form name="update1" action="" method="GET">
DataNumber:<input type="text" name="datanum" 
value="<?php echo $result['datanumber']; ?>">
Date:<input type="text" name="date" value="<?php echo $result['date']; ?>">
Type:<input type="text" name="type" value="<?php echo $result['type']; ?>">
Subject:<input type="text" name="subject" 
value="<?php echo $result['subject']; ?>">
Amount:<input type="text" name="amount" 
value="<?php echo $result['amount']; ?>">
SOE:<input type="text" name="soe" value="<?php echo $result['soe']; ?>">
Note:<input type="text" name="note" value="<?php echo $result['note']; ?>">
Liquidate:<input type="text" name="liquidate" 
value="<?php echo $result['liuidatedate']; ?>">
Checker Info:<input type="text" name="checkerinfo" 
value="<?php echo $result['checkerinfo']; ?>">
Accounting Info:<input type="text" name="accountingconfir" 
value="<?php echo $result['accountingconfir']; ?>">
<input type="submit" value="update" name="upd">
</form>
<?php }} ?>

更新语句以更新表。表格未更新,但会显示消息&#34; RECORD UPDATED&#34;

if(isset($_GET['upd'])){
$datanum=$_GET['datanum'];
$date=$_GET['date'];
$type=$_GET['type'];
$subject=$_GET['subject'];
$amount=$_GET['amount'];
$soe=$_GET['soe'];
$note=$_GET['note'];
$liquidate=$_GET['liquidate'];
$checkerinfo=$_GET['checkerinfo'];
$accounting=$_GET['accountingconfir'];

$up="UPDATE forma SET datanumber='$datanum' , date='$date' , 
type='$type' , subject='$subject' ,
amount='$amount', soe='$soe' , note='$note', liuidatedate='$liquidate' ,
checkerinfo='$checkerinfo', accountingconfir='$accounting'";
mysqli_query($db, $up);
echo "record updated";

1 个答案:

答案 0 :(得分:0)

哎呀,你错过的东西非常重要

 $up="UPDATE
        forma
    SET
        datanumber='$datanum',
        date='$date',
        type='$type',
        subject='$subject',
        amount='$amount',
        soe='$soe',
        note='$note',
        liuidatedate='$liquidate' ,
        checkerinfo='$checkerinfo',
        accountingconfir='$accounting'";

我的意思是除非你试图覆盖数据库中的所有数据。你看到了吗......

   Where ... ?

省略WHERE子句将使用此数据更新每一行。希望

  • 你打算这个(不太喜欢)
  • 你有备份
  • 您仍然只是在测试网站上使用测试数据
  • 您的查询已损坏。

您也错过了问题中的部分代码,或者语法错误

 if(isset($_GET['upd'])){
    ....

您的问题中没有关闭}

关于您的问题,我建议启用错误报告并显示错误

<?php  //right at top of php after the tag
    error_reporting(-1);
     ini_set('display_errors', 1);

这样PHP就会告诉你出了什么问题。