javascript - 如何将多个输入传递到单个查询中?
问题描述
在我的应用程序中,我希望用户提及他想要表的列数,然后输入这些列的数据并使用这些值创建一个表。这是我所拥有的:
<form action="" method="post">
<label for="numOfCols">Enter Number of Fields</label>
<input name="numOfCols" type="number" id="numOfCols">
<button type="submit" class="btn btn-info" name="numOfColsSubmit" >Generate</button>
</form>
<?php if(isset($_POST["numOfCols"])): ?>
<form action="" method="post">
<label for="tbName">Enter Layout Name</label>
<input type="text" name="tbName" id="tbName" class="form-control">
<?php $numOfCols = $_POST["numOfCols"];
for ($colNum = 0 ; $colNum < $numOfCols ; $colNum++): ?>
<div class="row g-4">
<div class="col-sm">
<label for="col_name<?php $colNum ?>">Name</label><br>
<input class="form-control" id="col_name<?php $colNum ?>" type="text"
name="col_name<?php $colNum ?>" >
</div>
<div class="col-sm">
<label for="col_types<?php $colNum ?>">Type</label><br>
<select name="col_types<?php $colNum ?>" class="form-control" id="col_types<?php $colNum ?>">
<option value="int">INT</option>
<option value="varchar" >VARCHAR</option>
<option value="text">TEXT</option>
</select>
</div>
<div class="col-sm">
<label for="col_length<?php $colNum ?>">Length</label><br>
<input type="text" class="form-control" name="col_length<?php $colNum ?>" id="col_length<?php $colNum ?>">
</div>
<div class="col-sm">
<br><button type="submit" class="btn btn-success" name="submitaddcol<?php $colNum ?>">Submit</button>
</div>
</div>
<?php endfor; ?>
<button type="submit" name="createtb" class="btn">Create Layout</button>
</form>
<?php endif;?>
<?php if(isset($_POST["tbName"])){
$table->createTb($_POST['tbName']);
} ?>
以及创建表的功能:
function createTb($tb){
$arr = [];
if(isset($_POST['col_name'])){
$colName = $_POST['col_name'];
}
if(isset($_POST['col_types'])){
$colTypes = $_POST['col_types'];
}
if(isset($_POST['col_length'])){
$colLength = $_POST['col_length'];
}
echo $tb;
array_push($arr , $colName , $colTypes , $colLength);
$stmt = $this->pdo->prepare("CREATE TABLE $tb ($colName $colTypes($colLength)) ");
$stmt->execute([$_POST['name'], 29]);
$stmt->execute();
$stmt = null;
}
我正在考虑从用户那里获取数据,将其传递给一个数组,然后在我的查询中使用该数组。问题是我无法获取所有用户数据。如果用户有 2 列或更多列,它将始终获得最后一列。有什么见解吗?
(出于某种原因将 createTb($_POST['tbName']) 放入 for 循环会导致现在显示或调用该函数)
解决方案
您可以将输入字段命名为数组,例如
<input type="text" name="col_name[]" value="foo" />
:var_dump($_POST['col_name']);
在您的示例中,您可以这样做:
<?php $numOfCols = $_POST["numOfCols"];
for ($colNum = 0 ; $colNum < $numOfCols ; $colNum++): ?>
<input class="form-control" id="col_name_<?=$colNum ?>" type="text" name="col_name[<?=$colNum ?>]" >
<input type="text" class="form-control" name="col_length[<?= $colNum ?>]" id="col_length_<?=$colNum ?>">
<?php endfor; ?>
并得到结果:
if(isset($_POST['col_name']) && is_array($_POST['col_name'])) {
for($i = 0; $i < count($_POST['col_name']); $i++) {
var_dump($_POST['col_name'][$i]);
var_dump($_POST['col_length'][$i]);
}
}
推荐阅读
- pandas - 具有多个类别的箱线图和小提琴图
- c# - WCF 数据服务显示未处理异常的错误
- amazon-web-services - 为什么会提示“我们计算的请求签名与您提供的签名不匹配”。对于 GET 但不是 PUT 对于 OpenSearch?
- javascript - 具有和不具有代理支持的不同代码的 Npm 模块
- discord.py - Discord.py - AttributeError: 'NoneType' 对象没有属性 'connect'
- java - 带有 CDATA 的 VDT xml 解析器 getContentFragment
- ios - 理解转义闭包 Swift
- javascript - 使用 Gmail Oauth 仅限制特定电子邮件登录
- javascript - Prisma:如何从生成的类型中排除属性
- sql - 为什么这个子查询在 Snowflake 中不起作用?