[mysql]后环数据,然后使用 PDO 保存

标签: MySQL PHP
发布时间: 2017/4/9 22:47:26
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 textarea ,基于如何生成很多时候它们在表中为一个特定的 id。所以有些人会没有 textarea ,其他人会有的别人用两个等......如何更新提交基于这些如果可能利用我这个例子。

主页面

<?php
$q = $_GET["q"];
$list = $db->prepare("SELECT * FROM Table WHERE ID = ?");
$list->execute(array($q));
$data = $list->fetchAll();
foreach ($data as $row) :?>

<textarea id="TableID<?=$row["TableID"]?>"></textarea>

<?endforeach?>

<div class="button">Save</div>

<script type="text/javascript">
$( '.button' ).click(function() {
var TableID = $("#TableID").attr('id');
var Comment = $("#TableID").val();

$.ajax({
method: "POST",
url: "save.php",
data : {
   TableID : TableID,
   Comment : Comment
 }
 });
 });
</script>

保存网页

<?php
 $Comment = $_POST["Comment"];
 $TableID = $_POST["TableID"];

 $save = $db->prepare('UPDATE Table
 SET Comment = ?
 WHERE TableID = ?');
 $save->execute(array($Comment,$TableID));
?> 

解决方法 1:

而不是生成您 textarea 元素具有不同的编号名称,将会在后端处理起来很麻烦︰

<textarea name="TableID1"></textarea>
<textarea name="TableID2"></textarea>
<textarea name="TableID3"></textarea>

你可以他们的名字,所以他们会放入单个 $_POST 变量。 要做到这一点,只是名称名称末尾的括号与他们像下面这样︰

<textarea name="TableID[]"></textarea>
<textarea name="TableID[]"></textarea>
<textarea name="TableID[]"></textarea>

在 PHP 的一面,上面的文本区域的所有 3 的值将放入数组索引 0,1 和 2 处的值。

你的情况,因为你想要每个 textarea 要与特定的 TableID 关联,使用中使用 TableID 作为第一个键,会看起来像这一个数组的数组︰

<textarea name="TableID[12][]"></textarea>
<textarea name="TableID[54][]"></textarea>
<textarea name="TableID[163][]"></textarea>
<textarea name="TableID[180][]"></textarea>

在这样做的时候,都可以经过 TableID 作为一部分的元素的名称,所以你不需要到邮政 2 个不同的变量,评论 & TableID,你真的只是需要发表评论 (textarea 值)。

所以你生成页的 foreach 循环中的代码将会看起来像︰

<textarea id="Comment[<?=$row["TableID"]?>][]"></textarea>

您提交代码 (假设你包你 <textarea> 中的元素 <form> ):

$(function () {
    $('form').submit(function () {
        $.post('save.php', $('form').serialize(), function () {
            // do something here if you want
        });
        return false;
    });
});

一旦你有你整齐地张贴在单个阵列中的数据,只是准备该语句,象你现在这样已经,然后包装 execute 在一个循环来循环访问每个 TableID:

foreach($Comment as $TableID => $CommentText){
    $save->execute(array($CommentText,$TableID));
}
官方微信
官方QQ群
31647020