PHP将多个复选框和文本框数组插入MySQL数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP将多个复选框和文本框数组插入MySQL数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3863字,纯文字阅读大概需要6分钟。
内容图文
![PHP将多个复选框和文本框数组插入MySQL数据库](/upload/InfoBanner/zyjiaocheng/890/38804499c3334a10a152df44127a3f75.jpg)
我在php中遇到数组结果有问题.我的第一个问题是:
即使没有选中复选框,它也会显示所有内容.我的第二个问题是它不会将值插入到数据库中,即使它已连接到数据库(正如您在前面的屏幕截图中看到的那样,它表示“已成功连接”).
这是我的html表单:
<form method="POST">
<input type="hidden" name="item[]" value="cupcake">
<input type="text" name="items" value="cupcake" readonly><br>
<b>Price :</b> <span name="price" value="3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>
<input type="hidden" name="item[]" value="cake">
<input type="text" name="items" value="cake" readonly><br>
<b>Price :</b> <span name="price" value="20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>
<input type="submit" name="insertBT"><br>
</form>
PHP:
if(isset($_POST['insertBT']))
{
class db_conn
{
public function create_conn($servername, $username, $password, $db)
{
global $conn;
$conn = new mysqli ($servername, $username, $password, $db);
}
public function check_conn()
{
global $conn;
if($conn->connect_error)
{
die ("Connection Failed : " . $conn->connect_error);
}
else
{
echo ("Connected Successfully <br>");
}
}
public function insert()
{
if(isset($_POST['checkbox'])) {
foreach($_POST['checkbox'] as $check) {
$check = implode(',', $_POST['checkbox']);
$name = implode(',', $_POST['item']);
$quantity = implode(',', $_POST['quantity']);
}
echo $check . "<br>";
echo $name . "<br>";
echo $quantity . "<br>";
mysql_query("INSERT INTO purchases(Product, Quantity, Price) VALUES('$name', '$quantity','$check')");
}
}
}
$obj1 = new db_conn;
$obj1->create_conn("localhost","root","", "dbtest");
$obj1->check_conn();
$obj1->insert();
}
解决方法:
你不应该使用内爆.这会将表单中所有内容的逗号分隔列表放入您插入的每一行中,并为每个选中的框重复此操作.您应该通过索引数组在每行中插入一个项目.
但是,如果表单中有复选框,则只提交已检查的复选框.结果是$_POST [‘checkbox’]数组的索引与相应的$_POST [‘item’]和$_POST [‘quantity’]元素不匹配.您需要将显式索引放入复选框名称中,以便将它们关联起来.
<form method = "POST">
<input type = "hidden" name = "item[]" value = "cupcake">
<input type = "text" name = "items" value = "cupcake" readonly><br>
<b>Price :</b> <span name = "price" value = "3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>
<input type = "hidden" name = "item[]" value = "cake">
<input type = "text" name = "items" value = "cake" readonly><br>
<b>Price :</b> <span name = "price" value = "20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>
<input type = "submit" name = "insertBT"><br>
</form>
然后您的PHP代码可以是这样的:
$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $quantity, $price);
foreach ($_POST['checkbox'] as $i => $price) {
$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();
}
顺便说一下,把价格放在你的HTML中似乎是一个坏主意.在提交表单之前,没有什么能阻止用户使用Web检查器修改HTML,因此他们可以降低价格.处理表单时,您应该从数据库中获取价格.
另请注意,在原始代码中,您使用MySQLi打开了数据库连接,但之后您尝试使用mysql_query而不是$conn-> query()进行插入.你不能混合这样的API; myql_query只能在使用mysql_connect打开连接时使用.
内容总结
以上是互联网集市为您收集整理的PHP将多个复选框和文本框数组插入MySQL数据库全部内容,希望文章能够帮你解决PHP将多个复选框和文本框数组插入MySQL数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。