php - 为什么我的 $_Post 似乎只存储最后输入的值?

标签 php html

在编写 php 代码以将其插入数据库之前,我尝试使用 Var_dump 或 print_r 来调试我的代码。当我使用这些方法时,我只得到我的表单的最后一个值,我已经搜索了为什么并且找不到答案,我将 name="something"更改为 name="something[]",这似乎是最常见的错误,但这似乎并没有改变任何东西。

所以我的表单页面上有这个 HTML 代码:

    <form method="post" action="phptestpage.php">

<table>
    <tr>
        <th>Job Number</th>
        <th>Timesheet #</th>
        <th>Work Date</th>
        <th>Shift</th>
    </tr>
    <tr>
        <td><input type="text" name="job_number"></td>
        <td><input type="text" name="timesheet"></td>
        <td><input type="date" name="work_date"></td>
        <td><select>
            <option value="days">Days</option>
            <option value="nights">Nights</option>
            </select></td>
    </tr>
</table>


<table>
    <tr>
        <th id="work_done">Work Done</th>
        <th id="equipment_used">Equipment Used</th>
    </tr>
    <tr>
        <td><textarea type="text" name="work_done"      id="work_done_input"></textarea></td>
        <td><textarea type="text" name="equipment_used" id="equipment_used_input"></textarea></td>
    </tr>
</table>
<table id="time_table">
    <tr>
        <th>Last Name</th>
        <th>First Name</th>
        <th>Rate</th>
        <th class="time">ST</th>
        <th class="time">TH</th>
        <th class="time">DT</th>
        <th class="time">EX-ST</th>
        <th class="time">EX-TH</th>
        <th class="time">EX-DT</th>
    </tr>
    <tr class="blank_row">
        <td><input type="text" name="last_name[]" class="last_name"></td>
        <td><input type="text" name="first_name"></td>
        <td><input type="text" name="rate"></td>
        <td><input type="number" name="st" class="time_input" value="0"></td>
        <td><input type="number" name="th" class="time_input" value="0"></td>
        <td><input type="number" name="dt" class="time_input" value="0"></td>
        <td><input type="number" name="ex_st" class="time_input" value="0"></td>
        <td><input type="number" name="ex_th" class="time_input" value="0"></td>
        <td><input type="number" name="ex_dt" class="time_input" value="0"></td>
    </tr>
    <tr>
        <td><input type="text" name="last_name[]" class="last_name"></td>
        <td><input type="text" name="first_name"></td>
        <td><input type="text" name="rate"></td>
        <td><input type="number" name="st" class="time_input" value="0"></td>
        <td><input type="number" name="th" class="time_input" value="0"></td>
        <td><input type="number" name="dt" class="time_input" value="0"></td>
        <td><input type="number" name="ex_st" class="time_input" value="0"></td>
        <td><input type="number" name="ex_th" class="time_input" value="0"></td>
        <td><input type="number" name="ex_dt" class="time_input" value="0"></td>
    </tr> 
</table>
    
<input type="submit" value="Submit" name="submit">
    
</form>

我正在使用这段代码来尝试查看它输出的值:

<?php
$names = $_POST['last_name'];
var_dump($names);
?>

我尝试了一些变体,但不知道我到底在做什么,包括将 [] 放入名称变量值中,如 $_POST['last_name[]'] 以尝试匹配变量,我犯了错误像以前那样。

最佳答案

您需要将输入包装在 <form> 中具有正确 action 的元素和 method .

<form action="/path/to/file.php" method="POST">
    <input type="text" name="last_name[]" class="last_name">
</form>

通过这样做,您应该能够返回 array使用 $_POST['last_name']

编辑

我已经使用简化版本的表单在本地对此进行了测试,以下内容将起作用:

<form method="POST">
    <input type="text" name="last_name[]">
    <input type="text" name="last_name[]">
</form>

这将返回 $_POST['last_name'] = array(0 => 'test1', 1 =>'test2') .我认为您的问题不在于您为变量命名的内容,而在于脚本中的其他内容。我建议您在进行时注释掉部分并进行调试。

关于php - 为什么我的 $_Post 似乎只存储最后输入的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957682/

相关文章:

php - 是否可以隐藏/不显示解析错误?

php - 拉维尔 4 : prevent lazy load hasMany relation when foreign_key is null (optional relation)

php - 提交表单时出现404错误

javascript - 是否有像 onChange 这样的函数也可以监听 JavaScript 的更改?

jQuery : $ ('div.myclass' ). height() 不准确

php - 为什么从mysql数据库读取数据,直方图不显示

php - Eclipse PDT 自动完成

html - 在两个 <button> 之间居中 <span>

php - 在 php - 语法的结果周围画一个框

html - CSS不改变前两个字符的颜色