php表单mysql更新保存数据

Posted

技术标签:

【中文标题】php表单mysql更新保存数据【英文标题】:php form mysql update saving data 【发布时间】:2016-03-26 20:30:15 【问题描述】:

保存字段“月”和“年”时遇到困难,因为它们未正确存储会话。不确定是不是因为我结合了月份和年份来制作排序代码。提交表单值后,将重置为 2016 年 1 月的默认值。如何将所选值保存到 mysql 表详细信息?

我需要改进以下功能以正确存储月份和年份字段,而不是存储默认值。

 <?php 


 $sql = "SELECT * FROM payments WHERE user_id = '".$_SESSION['user']['id']."' LIMIT 1;";
    $result2 = mysql_query($sql);
    if($result2) 
        $row2 = mysql_fetch_assoc($result2);
    
    $name = (isset($row2) && !empty($row2['name'])) ? $row2['name'] : (isset($_SESSION['name']) ? $_SESSION['name'] : '');
    $no = (isset($row2) && !empty($row2['no'])) ? $row2['no'] : (isset($_SESSION['no']) ? $_SESSION['no'] : '');
    $year = (isset($row2) && !empty($row2['sortcode'])) ? explode('/',$row2['sortcode'])[0] : (isset($_SESSION['year']) ? $_SESSION['year'] : '');
    $month = (isset($row2) && !empty($row2['sortcode'])) ? explode('/',$row2['sortcode'])[1] : (isset($_SESSION['month']) ? $_SESSION['month'] : '');

如果我将 $result2 删除到 $result 它对会话有效,但在所有数据被删除并重置为默认值之后,错误似乎就在这里,因此不会保存到数据库中?

【问题讨论】:

@pual 你找到解决这个问题的方法了吗? 【参考方案1】:

看起来您正在根据查询结果或默认会话值设置变量 $year 和 $month,但是当您进行插入时,您使用的是 $_SESSION 变量,并且从未使用过 $month 和 $year。 试试:

$query .= "'".$month."/".$year."'";
." `sortcode` = '".$month."/".$year."'";

【讨论】:

【参考方案2】:
<option <?php if(isset($month) && !empty($month) && $month == '1') echo " selected "; ?> value="1">1</option>

你有没有在选择之前和之后尝试过空格,比如“selected”而不是“selected”。 提交后查看页面源代码(在IE上查看源代码)

我认为输出会是这样的:

<option selectedvalue="1">1</option>

而不是

<option selected value="1">1</option>

是否有必要对 $month 进行 3 次检查

if (isset($month) && $month=='1')

我觉得应该够了。

编辑->

案例 $month 和 $year 在发布后正确更新 ->

$query = "INSERT INTO `details`(`user_id`, `name`, `no`, `sortcode`)
            VALUES (";
        $query .= "'" . $userID . "',";
        $query .= "'" . $_SESSION['name']  . "',";
        $query .= "'" . $_SESSION['no']    . "',";
        $query .= "'".$month."/".$year."'";
        $query .=
            ");";

或使用选择输入的值(发布后)->

$query = "INSERT INTO `details`(`user_id`, `name`, `no`, `sortcode`)
                VALUES (";
            $query .= "'" . $userID . "',";
            $query .= "'" . $_SESSION['name']  . "',";
            $query .= "'" . $_SESSION['no']    . "',";
            $query .= "'".$_POST['month']."/".$_POST['year']."'";
            $query .=
                ");";

或者只是更新 $session 月份和年份变量值。

【讨论】:

问题出在函数而不是形式上? 哦,对不起。我看不到您如何将值放入会话中。您可能会检查 $_session['month'] 和 year 是否不为空,也许忘记设置值?为什么不直接使用输入值而不是会话? 检查@gmfm 的解决方案是否有效,就像我上面所说的那样,看不到 $session 的值在哪里更新。 它适用于名称,不只是月份和年份值,唯一的区别是我使用了explode函数吗? 调用explode函数后,使用"echo($year);exit;"临时测试这两个变量的值是否正确。

以上是关于php表单mysql更新保存数据的主要内容,如果未能解决你的问题,请参考以下文章

Canonical:如何将 HTML 表单数据保存到 MySQL 数据库中

PHP

注册php、mysql密码、数据库

如何使用 PHP 以动态形式上传文件并将路径/文件名与其他数据一起保存到 mysql

PHP/HTML:输入后保存表单数据

编辑表单正确回显之前保存的数据,但不更新表单字段