基于js点击的多个php查询


multiple number of php queries based on js clicks

我对js还很陌生。这里我有一个js脚本,它使用基于php的mysql向数据库添加了一个点击查询时输入的文本框。每个新添加的文本框都有一个id名称,末尾有一个连续的数字,表示从js按钮添加的文本盒的数量,如id_0、id_1等。我想知道是否可以单独为每个连续的文本框运行php查询。我遇到的问题是跟踪添加了多少新文本框,以了解我应该运行多少次查询迭代,因为点击次数是一个js变量。有没有一种方法可以根据js的点击次数,特别是js变量来迭代php查询?(还是我认为这样做的方式不对?)

添加输入框的脚本:

<input id="btnAdd" type="button" value="Add" />
<br />
<br />
<div id="TextBoxContainer">
</div>
<br />
<input id="btnGet" type="button" value="Get Values" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
    var click_number = 0;
    $("#btnAdd").bind("click", function () {
        var div = $("<div />");
        click_number++;
        console.log(click_number);
        div.html(GetDynamicTextBox("id"+click_number));
        $("#TextBoxContainer").append(div);
    });
    $("body").on("click", ".remove", function () {
        $(this).closest("div").remove();
        click_number--;
        console.log(click_number);
    });
});
function GetDynamicTextBox(value0) {
    return '<label>Input &nbsp;<textarea rows="1" name="id_'+ value0 +'"><?php echo $_POST["id_'+ value0 +'"]; ?></textarea></label>&nbsp;';
}
</script>

对于php部分,我将$_POST变量转换为php变量,并对将php变量与特定列匹配的数据库运行一个简单的查询。到目前为止,只有当我知道将有多少$_POST变量时,我才能做到这一点。

我这样做的方式(这可能不是最好的方式)是有一个隐藏的HTML输入,其中包含您创建的文本框的数量。每次在JS中添加新的文本框时,都会增加隐藏输入的值。

然后,您可以在PHP中进行一个循环来获取每个POST元素。

如果动态编写查询,则不需要知道有多少$_POST变量。只需确保所有POST索引与表中的列名匹配即可:

例如,如果您有:

$_POST['name']="bob"
$_POST['age'] = "102"

您可以动态地将其转换为查询。。

// First, for security, we should create an array 
// with column names to check against to avoid SQL injection
$tableColumns = array("name", "age", "birthday", "favorite_color");
// This will contain the data that we want to insert
$insertables = array();
// Get the data from the post variables that 
// are named after columns in our table
foreach($_POST as $k->$v) 
    if(in_array($k, $insertables)) 
        $insertables[$k] = $v;
// Create a a query dynamically
// I'm assuming you're using PDO since you didn't specify
$sql = $pod->prepare("INSERT INTO `table` (`".implode("`, `", array_keys($insertables))."`) VALUES (:".implode(", :", array_keys($insertables)).")");
// Execute it
$sql->execute($insertables);

现在,您可以发送任何想要的POST数据,如果POST键作为列存在于表中,则它将被插入。