我有一个小应用程序,用户可以通过“添加另一个票证”按钮在单个表单中添加 3-4 张票证。这些文本框是通过 Jquery .append() 生成的,每张票证中有 5 个输入框。代码如下
<form action="ticket-addcode.php" method="post" enctype="multipart/form-data" class="my-form">
<span id="tixmegaform">
<input type="hidden" name="Eventid" value="<?php echo $eventid; ?>" />
<div class="AddRow">
<label>Package Name</label>
<input class="requierd" type="text" name="ticketgroup" placeholder="Enter the Package Name. Most Preferably Event name" id="EN" value="<?php echo $ticketgroup; ?>">
</div>
<h5>Ticket 1</h5>
<div class="AddRow">
<label>Ticket Title</label>
<input class="requierd" type="text" name="tname[]" placeholder="Enter the Package Name. Most Preferably Event name" id="EN">
</div>
<div class="AddRow">
<label>Ticket Desc</label>
<input class="requierd" type="text" name="tdesc[]" placeholder="Enter the Details" id="EN">
</div>
<div class="AddRow">
<label>Ticket Cost</label>
<input class="requierd" type="text" name="tprice[]" placeholder="Enter the ticket Cost in Numbers. No Currency" id="EN">
</div>
<div class="AddRow">
<label>Ticket Book URL</label>
<input class="requierd" type="text" name="turl[]" placeholder="Enter the URL without http" id="EN">
</div>
<div class="AddRow">
<label>Time</label>
<input type="text" class="left requierd" name="eventTime[]" id="timeformatExample1" placeholder="Start">
</div>
<div class="AddRow">
<label>Date</label>
<input class="requierd" type="text" name="tdate[]" placeholder="Enter the Package Name. Most Preferably Event name" id="from">
</div>
</span>
<input type="submit" name="submit" class="add_field_button_submit">
</form>
</div>
</div>
</div>
<a href="#"><div class="add_field_button">Add Another Ticket</div></a>
</div>
因此,当我点击“提交”按钮时,嵌套的 foreach 会遍历由提交按钮生成的数组。我能够从数组中获取值,但不知何故输出对我来说没有用。下面是 foreach 和输出
foreach ($_POST as $pos => $newarr) {
foreach($newarr as $res => $final){
echo $pos.'-----'.$final.'<br>';
}
}
Output
**tname-----VIP tix
tdesc-----Early Bird Desc
tdesc-----VIP Desc Tix
tprice-----5000
tprice-----10000
turl-----google.com
turl-----yahoo.com
eventTime-----00:30:00
eventTime-----00:00:45
tdate-----2-2-2016
tdate-----3-3-2016**
我尝试使用插入语句,但它不起作用。看来我的 foreach 正在解析子数组(tname 数组)和外部数组。如果我的 foreach 只能获取不同键的值而不是整个子数组,我就可以将记录插入到数据库中。
您能指导我如何实现这一目标以及在哪里放置 INSERT 语句吗?
最佳答案
我认为像您所做的那样循环 $_POST
不会对您有任何好处。注意到你的信息出现的顺序如何使它变得困难吗?
而是选择任何数组字段来首先确定您拥有的票数。然后使用票数来迭代每张票。这样就可以得到每组(票)相关信息的索引。通过索引,您可以获取与该组相关的所有信息。
一旦获得了必要的信息,您就可以通过一次执行一项插入或执行一次大插入来存储每条信息。为了简单起见,我们将使用前一种方法(使用 PDO)。
下面是一个未经测试的粗略草图:
try {
$dbh = new PDO($dsn, $user, $password);
// prepare your SQL statement
$sth = $dbh->prepare("INSERT INTO table (title, desc, price, url) VALUES(?, ?, ?, ?)");
// loop over each ticket information
for ($i = 0, $numTickets = count($_POST['tname']); $i < $numTickets; $i++) {
$title = $_POST['tname'][$i];
$desc = $_POST['tdesc'][$i];
$price = $_POST['tprice'][$i];
$url = $_POST['turl'][$i];
// insert information into database
$sth->execute(array($title, $desc, $price, $url));
}
} catch (PDOException $e) {
// if something goes wrong, add some logic
}
有关 PDO 的更多信息,请阅读 documentation .
关于php - 如何使用foreach输出将多条记录插入mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630934/