PHP 函数将随机值存储到数据库中

PHP function is storing random values into database

本文关键字:数据库 存储 函数 随机 PHP      更新时间:2023-09-26

我一直在寻找解决方案,为什么我添加的字段没有正确存储在数据库中,并得出结论,jquery没有正确添加html字段,这就是为什么它没有提交到渲染php程序以在数据库中添加字段数据。

为了正确演示,请查看代码

我的 HTML 表单代码写成

<table id="additional_item_numbers">
<thead>
<tr>
<th>Item</th>
<th>&nbsp;Delete</th>
</tr>
</thead>
<tbody>
<tr><td><input type="text" class="form-control form-inps" size="50" name="additional_item_numbers[]" value="123" /></td><td>
<a class="delete_item_number" href="javascript:void(0);">Delete</a>
</td><tr>
</tbody>
</table>

并定义了jquery函数以在ENTER键上在表单中添加一个新字段

<script type="text/javascript" language="javascript">
$("#additional_item_numbers").keyup(function(event){
    if(event.keyCode == 13){
        $("#additional_item_numbers tbody").append('<tr><td><input type="text" class="form-control form-inps" size="40" name="additional_item_numbers[]" value="" /></td><td>&nbsp;</td></tr>');
            //document.getElementById("form-inps").focus();
            $("#additional_item_numbers").find("input[type='text']").last().focus();
    }
});
</script>

函数完美地在 html 表单中添加一个新字段,但在提交此表单后,字段将随机添加到数据库中。有时不会向数据库添加单个值,有时会添加随机值,有时会在提交时添加所有值。如果我在使用jquery函数添加新字段后检查页面的源代码。它不会在源代码中显示那些新添加的字段。我认为这是由于客户端功能,但它应该在提交后将所有值添加到数据库中。如果我去编辑一个项目并添加一些额外的项目编号,那么将调用 PHP 的相同save()函数,它不会从以前的项目编号中丢失提交表单的单个值,但附加添加的项目编号的行为与上述相同。

经过大量搜索并深入研究 php 代码,我认为 jquery 没有正确设置新添加字段的名称,因此那些名称设置正确的字段数据被提交给 php 函数并将该数据存储到数据库中,但那些名称未正确设置的字段不会转到 php 程序,因此它们不会出现在数据库中。

为了更好地理解,我也包括了php函数代码。

我的PHP函数将数据添加到数据库中。

function save($item_id, $additional_item_numbers)
    {
        $this->db->trans_start();
        $this->db->delete('additional_item_numbers', array('item_id' => $item_id));
        foreach($additional_item_numbers as $item_number)
        {
            if ($item_number!='')
            {
                $this->db->insert('additional_item_numbers', array('item_id' => $item_id, 'item_number' => $item_number));
            }
        }
        $this->db->trans_complete();
        return TRUE;
    }

任何帮助将不胜感激。

你使用的是谷歌浏览器吗? 按 F12 拉起开发人员工具。 您可以检查 JavaScript 向页面添加了什么内容。

Internet Explorer和Firefox也可以通过按F12来拉出开发人员工具。

我建议不要在 name 属性的值中使用 [],因为它有点令人困惑。 有些人可能认为这是一个数组或数组的值而不是字符串。

我对此相当陌生,但我想你可以使用调试器和元素检查来查看你的 javascript 和 html 元素。 浏览器之间的概念是相同的。

铬:

https://developer.chrome.com/devtools/docs/dom-and-styleshttps://developer.chrome.com/devtools/docs/javascript-debugging

火狐:

https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTMLhttps://developer.mozilla.org/en-US/docs/Tools/Debugger

我希望这有所帮助。

让我们从基础知识开始:

我没有看到<form action="script.php">

提交表单之前,在 FireFox 中。 右键单击页面上的任意位置,然后选择"检查元素"

在FireFox Inspector窗口中,转到"网络"选项卡,然后单击"重新加载"按钮

提交表格

在 FireFox Inspector 窗口中,单击文件列
中的页面

在选择页面时出现的框中选择"参数"。(通常在右侧)

应列出提交的数据。

它将在键:值格式中如下所示:

additional_item_numbers[]:"value submitted is here" 

键(字段名称)为蓝色,值为橙色

additional_item_numbers在哪里定义? 如果要将其用作变量,则需要将此行更改为:

$("#additional_item_numbers tbody").append('<tr><td><input type="text" class="form-control form-inps" size="40" name="' + additional_item_numbers[0] + '" value="" /></td><td>&nbsp;</td></tr>');

花了很多时间后,我得到了问题的根源, 这是一个数据库错误,因为数据库表被定义为不存储重复值,每次我都放置一个重复值,它没有存储在数据库中,这是程序随机行为的原因。 当我提供唯一值时, 它正在正确更新数据库,每当值中存在重复项时,在重复值之后,它不会将进一步的值存储到数据库中。要使其正常工作,只需更改数据库的结构或

就我而言:我的要求是,没有重复,但除了重复值之外的所有值都应存储在数据库中,我通过更改

$this->db->insert('additional_item_numbers', array('item_id' => $item_id, 'item_number' => $item_number));

$this->db->query("INSERT IGNORE INTO additional_item_numbers (item_id, item_number) VALUES ('".$item_id."', '".$item_number."')");

谢谢大家的回答。竖起大拇指:)