如何使用php将表的多行值插入数据库
问题的出现原因:
在将表格的多行值插入数据库时,需要将输入的每个值都存储在数组中。例如,表格中的每个产品都应该是一个数组,如product[]。然后在PHP代码中,使用for/foreach循环遍历数组,并将每一行插入数据库。
解决方法:
1. 在HTML表单中,为每个输入框的name属性添加[],以创建一个数组。例如,如果有一个名为product的输入框,则应该将其name属性设置为product[]。
2. 在PHP代码中,使用for或foreach循环遍历每个数组,并将其值插入数据库。
3. 在循环中,使用SQL语句将每个值插入数据库表中。
以下是一个示例代码,演示如何将表格的多行值插入数据库:
<form method="post" action="insert.php"> <table id="pTable"> <tr> <th>Product</th> <th>Price</th> </tr> <tr> <td><input type="text" name="product[]"></td> <td><input type="text" name="price[]"></td> </tr> <tr> <td><input type="text" name="product[]"></td> <td><input type="text" name="price[]"></td> </tr> </table> <input type="submit" value="Submit"> </form>
<?php // 连接数据库 $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否成功 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 获取表单提交的数据 $products = $_POST['product']; $prices = $_POST['price']; // 遍历数组,并将每个值插入数据库 for($i = 0; $i < count($products); $i++) { $sql = "INSERT INTO products (product, price) VALUES ('" . $products[$i] . "', '" . $prices[$i] . "')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "" . $conn->error; } } // 关闭数据库连接 $conn->close(); ?>
通过以上方法,您可以轻松地将表格的多行值插入数据库,并确保每个值都能正确存储。
在使用PHP将表格的多行值插入数据库时,可能会出现以下问题:无法将表单提交到数据库。解决方法是阻止表单的提交,并通过读取表格 #pTable 中的数据创建一个 JSON 数据字符串。在表单中添加一个隐藏字段 ,将 JSON 字符串传递到服务器端。
在上述代码中,还进行了一些HTML和PHP的更改。HTML代码中,添加了一个保存按钮的点击事件,用于将新行添加到表格中。点击编辑按钮可以编辑行,点击删除按钮可以删除行。同时,表单中添加了一个用于存储 JSON 字符串的隐藏字段。
PHP代码中,使用 json_decode 将传递的 JSON 字符串解码为关联数组。然后,使用 foreach 循环遍历数组,将每个数组项的值添加到查询语句的 VALUES 子句中。在将值添加到查询语句中时,需要添加单引号来包裹每个值。最后,执行查询语句将数据插入到数据库中。
以上就是解决将表格的多行值插入数据库的问题的原因和解决方法。
当你提交表单时,它会通过POST方式发送输入值,而不是整个表格。由于输入框中仍然是最后添加行的值,它会通过POST方式发送这些值,然后将其插入到数据库中。
以下是解决方法:
1) 使用JavaScript的onclick方法拦截表单提交(你需要使用e.preventDefault来停止实际的提交)。
2) 使用jQuery读取所有的表格行,创建一个名为selectedPages的数组,它应该类似于以下结构:
selectedPages {
[
"category": "Foo",
"displayName": "FooBar",
"pageName": "Bar",
"privilage": 1
],[
"category": "Foo",
"displayName": "FooBar",
"pageName": "Bar",
"privilage": 1
],[
"category": "Foo",
"displayName": "FooBar",
"pageName": "Bar",
"privilage": 1
]
}
3) 创建一个新的php文件,在该文件的底部放置你当前拥有的php代码。
4) 发送一个AJAX的POST请求到新的php文件,并将selectedPages作为数据发送。
5) 在php文件中,遍历数组并将每个项插入到数据库中。