PHP 函数将随机值存储到数据库中
PHP function is storing random values into database
我一直在寻找解决方案,为什么我添加的字段没有正确存储在数据库中,并得出结论,jquery没有正确添加html字段,这就是为什么它没有提交到渲染php程序以在数据库中添加字段数据。
为了正确演示,请查看代码
我的 HTML 表单代码写成
<table id="additional_item_numbers">
<thead>
<tr>
<th>Item</th>
<th> 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> </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> </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."')");
谢谢大家的回答。竖起大拇指:)
- 如何在本地存储(或其他数据库)上安全地保存敏感访问代码
- Codeigniter:通过Ajax上传图像并存储在数据库中
- 使用node-js上传文件,并将表单信息存储在数据库(mysql)中
- 如何离线存储数据库,在线时共享到服务器
- 我的地图数据's不会使用php存储在mysql数据库中
- 将动态feild数据存储到jquery-mobile和php-mysql中的数据库中
- 将Javascript对象存储在Wordpress用户数据库中
- 为数据库存储设置角度日期格式
- 如何获取所有旅行模式的距离和持续时间,例如驾驶,公交,骑自行车,在我的页面中步行以及将其存储在数据库中
- 我想从网站收集数据并使用PHP将它们存储在数据库中
- 将SQLite数据库存储在IndexedDB中
- 将数据库存储/备份到一个文件中,IndexeDB、WebSQL和SQLlite的区别
- Android WebView 数据库存储返回 null
- 删除 localStorage,Chrome/Chromium 中选项卡的数据库存储
- 如何在事务中创建索引数据库存储
- 是从javascript对象还是后端数据库存储和检索数据
- 在React Native中从Firebase数据库/存储中加载并返回图像
- 网站如何使用cookie或本地存储或数据库存储来存储持久/临时状态?
- 动态填充的图表数据和数据库存储
- 一个Meteor.com托管的应用程序有多少数据库存储空间