一次更新数据库中的多条记录


Updating multiple records from database at once

我只是在我的edit_mision_vision.php中添加了那些未定义索引的名称。我已经更新了我的代码,它现在可以工作了。感谢您的帮助:)

update_mission_vision.php//更新发生的位置以及通知显示的位置(但现在已修复),说明愿景、使命和价值观未定义

<?php
    $conn=mysql_connect("localhost", "root");
    mysql_select_db("alumni", $conn);
    if (! $conn)
    {
        DIE('Could not connect: ' . mysql_error());
    }
    if(isset($_POST['update']))
    {
    $vision = $_POST['vision'];
    $mission = $_POST['mission'];
    $values = $_POST['values']; 
    $query="UPDATE about SET description='$vision' WHERE title='Vision'";
    $retval = mysql_query( $query, $conn );
    $query1="UPDATE about SET description='$mission' WHERE title='Mission'";
    $retval = mysql_query( $query1, $conn );
    $query2="UPDATE about SET description='$values' WHERE title='Values'";
    $retval = mysql_query( $query2, $conn );
    if(! $retval )  {
        DIE('Could not enter data: ' . mysql_error());
    }else{
        echo "<script type='text/javascript'>alert('Changes saved!!');
                    window.location.assign('/alumni/mission_vision.php');</script>";
    }
    }
    if (isset($_POST['cancel']))
    {
        header("Location: /alumni/admin_profile.php");
    }
    mysql_close($conn);
?>

edit_mission_vision.php我编辑使命、愿景和价值观描述的地方//这是我添加 name="vision"、name="mission"、name="values"的地方,这解决了我的问题。

<form action="/alumni/admin/update_mission_vision.php" method="post">
<?php
    include_once 'db.php';
    $sql="SELECT * FROM about";
    $result_set=mysql_query($sql);
    while($row=mysql_fetch_array($result_set))
    {
?>
<?php if($row['title']=='Vision') { ?>
 <label>Vision</labrl><br><br>
<textarea id="vision" name="vision" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>
<?php if($row['title']=='Mission') { ?>
<label>Mision</label><br><br>
<textarea id="mission" name="mission" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>
<?php if($row['title']=='Values') { ?>
<label>Values</label><br><br>
<textarea id="values" name="values" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>

  <?php
    }
    ?>
    <input type="submit" name="update" value="Save Changes"/>
    <input type="submit" name="cancel" value="Cancel"/>
</form>
将此

代码替换为"edit_mission_vision.php"文件

<form action="/alumni/admin/update_mission_vision.php" method="post">
<?php
    include_once 'db.php';
    $sql="SELECT * FROM about";
    $result_set=mysql_query($sql);
    while($row=mysql_fetch_array($result_set))
    {
?>
<?php if($row['title']=='Vision') { ?>
 <label>Vision</labrl><br><br>
<textarea name="vision" id="vision" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>
<?php if($row['title']=='Mission') { ?>
<label>Mision</label><br><br>
<textarea name="mission" id="mission" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>
<?php if($row['title']=='Values') { ?>
<label>Values</label><br><br>
<textarea name="values" id="values" maxlength="1000" height="1000000px" rows="10" cols="100"><?php echo $row['description']; ?></textarea>
<br><br>
<?php  } ?>

  <?php
    }
    ?>
    <input type="submit" name="update" value="Save Changes"/>
    <input type="submit" name="cancel" value="Cancel"/>
</form>

如果您在所有三条记录中获得相同的值,则需要创建数组,然后通过 while 循环更新查询中的数组。并在文本区域的名称属性后添加"[]"。希望会有所帮助。

1)您需要在所有文本区域中定义名称。

2) 为什么需要三个查询才能更新单个字段?

试试这个查询:

update `about` set `description` =  
                  case 
                       when title='Vision' then '$vision' 
                       when title='Mission' then '$mission' 
                       when title='Values' then '$values' 
                  end

旁注:停止使用mysql_*。它不再可用。用 mysqli_*PDO .