非Ajax方式表单多参数提交及PHP端数据库存储实现
表单数据传递与数据库写入实现方案
问题场景
你现在有一个商品表单,需要把item_id、item_name、item_price和item_bio这几个字段的值传到menu.php,然后写入数据库。目前你已经有了基础的表单和数据库操作代码,接下来我给你梳理具体的实现步骤:
你现有的表单代码
<form method="POST" action="menu.php"> <div class = 'cont'> <span>item_name</span> <hr /> <img id='img_order' src='img/$item_pic' alt='ss'> <p id='price'>price : 3.14 </p> <p id='bio'>this item is ... </p> <input type= 'submit' class='btn btn-primary' value='Add to Order' name = 'order' /> </div> </form>
你现有的menu.php代码片段
if(isset($_POST['addToDatabase'])){ query = "INSERT INTO table_name('item_id','item_name','item_price','item_bio' )VALUE('$item_id' , '$item_name','item_price','item_bio')"; }
具体实现步骤
第一步:给表单添加隐藏字段传递数据
目前你的表单里没有携带那四个字段的输入项,所以得在表单内部加上隐藏输入框,把这些数据偷偷传给menu.php。另外还要把提交按钮的name改成addToDatabase,这样才能和menu.php里的判断条件对应上:
<form method="POST" action="menu.php"> <div class = 'cont'> <!-- 新增隐藏字段,用来传递需要存入数据库的参数 --> <input type="hidden" name="item_id" value="<?php echo $item_id; ?>"> <input type="hidden" name="item_name" value="<?php echo $item_name; ?>"> <input type="hidden" name="item_price" value="<?php echo $item_price; ?>"> <input type="hidden" name="item_bio" value="<?php echo $item_bio; ?>"> <!-- 把页面展示的内容也改成用变量输出,保证和传递的数据一致 --> <span><?php echo $item_name; ?></span> <hr /> <img id='img_order' src='img/<?php echo $item_pic; ?>' alt='ss'> <p id='price'>price : <?php echo $item_price; ?> </p> <p id='bio'><?php echo $item_bio; ?> </p> <input type= 'submit' class='btn btn-primary' value='Add to Order' name = 'addToDatabase' /> </div> </form>
第二步:在menu.php中接收变量并构造SQL
到了menu.php这边,我们通过$_POST数组获取表单传过来的值,存到对应的变量里,然后用这些变量来写SQL语句就可以了:
if(isset($_POST['addToDatabase'])){ // 从POST请求中取出值,存入变量 $item_id = $_POST['item_id']; $item_name = $_POST['item_name']; $item_price = $_POST['item_price']; $item_bio = $_POST['item_bio']; // 构造插入数据库的SQL语句(顺便帮你修正了原SQL的语法小问题:字段不要加单引号,VALUES拼写要正确) $query = "INSERT INTO table_name(item_id, item_name, item_price, item_bio) VALUES('$item_id', '$item_name', '$item_price', '$item_bio')"; // 这里后续可以加执行SQL的代码,比如用mysqli或者PDO执行这个$query }
小提醒:虽然你说不用在意代码是否可运行,但实际开发里一定要用预处理语句防止SQL注入哦,这里只是按照你的需求完成变量传递和写入的逻辑~
内容的提问来源于stack exchange,提问作者Abdalrazag Al-Shrofat
相关产品推荐
相关产品推荐

