【问题标题】:Updating mysql database when data is passed through as sessions当数据作为会话传递时更新mysql数据库
【发布时间】:2013-03-26 11:24:46
【问题描述】:

我已经让会话显示子信息,我现在希望能够编辑该信息并更新数据库。我已经尝试了每个 youtube 视频和网站,但没有使用 $_SESSION 他们都使用 $_POST。

<div class="post">
  <h1 class="title">Child Details: </h1>
    <p class="title"><img src=" <?php echo "".$_SESSION['sourcepath']; ?>" 
    </p>
    <p class="title"><?php echo "".$_SESSION['ChildID']; ?></p>

    <table style="width: 100%">
        <tr>
            <td style="width: 106px">Name</td>
            <td style="width: 252px"><?php       echo "".$_SESSION            ['Firstname']; ?> <?php echo "".$_SESSION['Surname']; ?></td>
            <td style="width: 94px">School</td>
            <td><form method="post">
                <br />
                <textarea name="School" cols="20" rows="5"><?php echo "".$_SESSION['School']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Date of Birth</td>
            <td><?php echo "".$_SESSION['DateOfBirth']; ?></td>
            <td style="width: 94px">English</td>
            <td><form method="post">
                <br />
                <textarea name="English" cols="20" rows="5"><?php echo "".$_SESSION['English']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Age</td>
            <td><?php echo "".$_SESSION['Age']; ?>;</td>
            <td style="width: 94px">Science</td>
            <td><form method="post">
                <br />
                <textarea name="Science" cols="20" rows="5"><?php echo "".$_SESSION['Science']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Address</td>
            <td><form method="post">
                <br />
                <textarea name="Address" cols="20" style="height: 89px"><?php echo "".$_SESSION['Address']; ?></textarea></form>
            </td>
            <td style="width: 94px">Maths</td>
            <td><form method="post">
                <br />
                <textarea name="Maths" cols="20" rows="5"><?php echo "".$_SESSION['Maths']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Postcode:</td>
            <td><?php echo "".$_SESSION['PostCode']; ?>;</td>
            <td style="width: 94px">Homework</td>
            <td><form method="post">
                <br />
                <textarea name="Homework" cols="20" rows="5"><?php echo "".$_SESSION['Homework']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Contact Number</td>
            <td><form method="post">
                <textarea name="ContactNumber" cols="20" rows="2"><?php echo "".$_SESSION['ContactNumber']; ?></textarea></form>
            </td>
            <td style="width: 94px">Additional</td>
            <td><form method="post">
                <br />
                <textarea name="Additional" cols="20" rows="8"><?php echo "".$_SESSION['Additional']; ?></textarea></form>
            </td>
        </tr>
        <tr>
            <td style="width: 106px">Mother Name</td>
            <td><?php echo "".$_SESSION['MotherName']; ?></td>
            <td style="width: 94px">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="width: 106px">&nbsp;</td>
            <td>&nbsp;</td>
            <td style="width: 94px">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="width: 106px">Last Update</td>
            <td><?php echo "".$_SESSION['TimeStamp']; ?></td>
            <td style="width: 94px">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="width: 106px">&nbsp;</td>
            <td>&nbsp;</td>
            <td style="width: 94px">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="width: 106px">



            </td>
            <td>
            <form method="post" action="updatetest.php">
                <input type="hidden" name="id" value="<?php echo $_SESSION['ChildID']; ?>"/>
                <input name="Submit" type="submit" value="Update" /></form>
            </td>







<?php session_start(); ?>
    <?php       
    $connect = mysql_connect("127.0.0.1" , "root" , "") or die ("Couldnt connect     to            database");
    mysql_select_db("travellerfile") or die ("couldnt find the database");

    $School = $_SESSION['School'];
    $Maths = $_SESSION['Maths'];
    $English = $_SESSION['English'];
    $Science = $_SESSION['Science'];
    $Homework = $_SESSION['Homework'];
    $Additional = $_SESSION['Additional'];
    $id = $_SESSION['ChildID'];

    $q = "SELECT * FROM child WHERE ChildID = $_SESSION[ChildID]";
    $result = mysql_query($q);
    $person = mysql_fetch_array($result);

    $u = "UPDATE child SET Maths= '$_SESSION['Maths']', Science= '$_SESSION['Science']';
?>

【问题讨论】:

  • 使用会话更新一行,类似于更新一行,任意值
  • 那么代码是什么?我已经尝试了一切,但没有任何效果。
  • 你没有运行更新查询$u
  • 第 1 - PHP 代码必须始终在您的 HTML 代码之前...第 2 - 不要使用 SESSION 进行更新等。使用 POST...
  • @Svetlio 从技术上讲这根本不是真的,这完全取决于您的逻辑结构和其他因素。

标签: php mysql database session


【解决方案1】:

$_POST$_SESSION 都只是数组。唯一让它们与众不同的是它们是全球性的。因此,如果您有适用于 $_POST 的代码,只需替换相应的 $_SESSION 值即可。

您真正的问题是,您要提交表单。表单可以使用getpost 方法提交。没有session 方法。因此,您的值将到达 $_POST 变量中的 php 脚本。然后,您可以在运行更新之前将它们复制到 $_SESSION 变量,但实际上没有充分的理由这样做。他们需要在$_SESSION 中的唯一原因是,如果需要使用提交的值重新显示表单,它们可以被输出。

【讨论】:

    【解决方案2】:

    为数据库更新$_SESSION end grab $_POST

    ...
    $School = $_['School'] = $_POST['School'];
    $Maths = $_SESSION['Maths'] = $_POST['Maths'];
    $English = $_SESSION['English'] = $_POST['English'];
    $Science = $_SESSION['Science'] = $_POST['Science'];
    $Homework = $_SESSION['Homework'] = $_POST['Homework'];
    $Additional = $_SESSION['Additional'] = $_POST['Additional'];
    $id = $_SESSION['ChildID'];
    ...
    

    【讨论】:

      【解决方案3】:

      例如:

        $_SESSION['ChildID'] = 5;
      
       <form method="post" action="updatetest.php">
       <input type="hidden" name="id" value="<?php echo $_SESSION['ChildID']; ?>"/>
       <input name="Submit" type="submit" value="Update" /></form>
      

      这会发给你:

       $_POST['id'] = 5;
      

      所以:

       UPDATE table SET col = $_POST['id'];
      

      【讨论】:

      • 这或多或少是我要发布的内容。如果你想编辑数据,你可以把它放到一个表单中,然后使用 POST 或 GET 来传递更新的数据,然后你可以在更新记录之前使用 PHP 收集数据。
      【解决方案4】:
      $_SESSION['School'] = $_POST['School'];
      $School = $_SESSION['School'];
      

      您必须在某处声明 $_SESSION['School'] 包含名为“School”的 Textarea 的值。您不能只期望 PHP 将 POST 变量放入 SESSION 变量中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        相关资源
        最近更新 更多