首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/ MySQL一次更新多行

/ MySQL一次更新多行
EN

Stack Overflow用户
提问于 2015-12-15 11:58:23
回答 1查看 1.7K关注 0票数 2

我读过这个问题:https://stackoverflow.com/questions/20255690/php-insert-a-variable-number-of-records-to-mysql-from-a-html-form#

但我不知道如何将其应用于具有多个输入的表单。我希望这些输入进入同一行(每个数组id)。

我的PHP呈现以下HTML:

代码语言:javascript
复制
<div class="panel-body">
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 employee-container">
            <label for="visible-107">
                <img title="Jane Doe" src="/images/prof-pics/default.jpg" class="img-responsive img-circle" alt="Jane Doe">
            </label>
            <h4><input type="checkbox" name="visible[0]" id="visible-107"> <label for="visible-107">Jane Doe</label></h4>
            <div class="input-group">
                <span class="input-group-addon">Function</span>
                <input type="text" class="form-control" name="function[0]" id="function-107">
            </div>
            <div class="input-group">
                <span class="input-group-addon">Order</span>
                <select class="form-control" name="order[0]" id="order-107">
                    <option value="">-- select one --</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                </select>
            </div>
            Description<br>
            <textarea class="form-control" name="description[0]" id="description-107"></textarea>
        </div>
        <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 employee-container">
            <label for="visible-2"><img title="John Doe" src="/images/prof-pics/default.jpg" class="img-responsive img-circle" alt="John Doe"></label>
            <h4><input type="checkbox" name="visible[1]" id="visible-2"> <label for="visible-2">John Doe</label></h4>
            <div class="input-group">
                <span class="input-group-addon">Function</span>
                <input type="text" class="form-control" name="function[1]" id="function-2">
            </div>
            <div class="input-group">
                <span class="input-group-addon">Order</span>
                <select class="form-control" name="order[1]" id="order-2">
                    <option value="">-- select one --</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                </select>
            </div>
            Description<br>
            <textarea class="form-control" name="description[1]" id="description-2"></textarea>
        </div>
    </div>
</div>

如何迭代这些数组,以便将它们插入/更新为每个数组ID的行?

在实现了娜娜·帕蒂卡尔的回答之后

代码语言:javascript
复制
function set_team($web_mysqli, $mysqli, $uid, $visible, $function, $order, $description, $action, $update_id = null ) {
    $number_empl = sizeof($function);

    for($i=0; $i<$number_empl; $i++) {
        $uid = $uid[$i];
        $visible = $visible[$i];
        $function = $function[$i];
        $order = $order[$i];
        $description = $description[$i];

        $name = get_full_name($mysqli, $uid, false);

        $sql = "INSERT INTO team (name, function, description, displayorder, visible) VALUES ('$name', '$function', '$description', '$order', '$visible')";
        $web_mysqli->query($sql) or die(mysqli_error($web_mysqli));
    }

    $_SESSION['success'] = "Employee list website updated";
    header("Location: ".BASE_PATH."/includes/views/list-employees.php");
    exit();

if(isset($_POST['submit-btn'])) {
    set_team($web_mysqli, $mysqli, $_POST['uid'], $_POST['visible'], $_POST['function'], $_POST['order'], $_POST['description'], 'insert');
}

当我保存时,只将名插入到表中,后面是3行空行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-15 12:13:28

不需要name[0]

代码语言:javascript
复制
<input type="checkbox" name="visible[0]" id="visible-107">
<input type="text" class="form-control" name="function[0]" id="function-107">
<select class="form-control" name="order[0]" id="order-107">
<textarea class="form-control" name="description[0]" id="description-107"></textarea>

制作

代码语言:javascript
复制
<input type="checkbox" name="visible[]" id="visible-107">
<input type="text" class="form-control" name="function[]" id="function-107">
<select class="form-control" name="order[]" id="order-107">
<textarea class="form-control" name="description[]" id="description-107"></textarea>

SomePage.php (提交页面)

代码语言:javascript
复制
<?
extract($_POST);
$sizeOfFunc=sizeof($function);

for($i=0;$i<$sizeOfFunc;$i++)
{
    $Visible=$visible[$i];
    $Function=$function[$i];
    $Order=$order[$i];
    $Description=$description[$i];

    echo $Visible." ".$Function." ".$Order." ".$Description;

    //Use $Visible, $Function, $Order, $Description in your query
}

?>

更新代码

不要使用相同的变量名。至少更改变量名。

这是错误的。

代码语言:javascript
复制
$uid = $uid[$i];
$visible = $visible[$i];
$function = $function[$i];
$order = $order[$i];
$description = $description[$i];

这是正确的

代码语言:javascript
复制
$Uid = $uid[$i];
$Visible = $visible[$i];
$Function = $function[$i];
$Order = $order[$i];
$Description = $description[$i];

我改变了你的密码。使用下面的代码。看起来不错。

代码语言:javascript
复制
<?
function set_team($web_mysqli, $mysqli, $uid, $visible, $function, $order, $description, $action, $update_id = null ) {
    $number_empl = sizeof($function);

    for($i=0; $i<$number_empl; $i++) {
        $Uid = $uid[$i];
        $Visible = $visible[$i];
        $Function = $function[$i];
        $Order = $order[$i];
        $Description = $description[$i];

        $name = get_full_name($mysqli, $Uid, false);

        $sql = "INSERT INTO team (name, function, description, displayorder, visible) VALUES ('$name', '$Function', '$Description', '$Order', '$Visible')";
        $web_mysqli->query($sql) or die(mysqli_error($web_mysqli));
    }

    $_SESSION['success'] = "Employee list website updated";
    header("Location: ".BASE_PATH."/includes/views/list-employees.php");
    exit();

if(isset($_POST['submit-btn'])) {
    set_team($web_mysqli, $mysqli, $_POST['uid'], $_POST['visible'], $_POST['function'], $_POST['order'], $_POST['description'], 'insert');
}
?>

编辑后我在我的系统中检查了你的代码。效果很好。

代码语言:javascript
复制
<?

error_reporting(0);
extract($_POST);

echo $number_empl = sizeof($function);

for($i=0; $i<$number_empl; $i++) 
{
    $Visible = $visible[$i];
    $Function = $function[$i];
    $Order = $order[$i];
    $Description = $description[$i];
    $name="Just";

    echo $sql = "INSERT INTO team (name, function, description, displayorder, visible) VALUES ('$name', '$Function', '$Description', '$Order', '$Visible')"."<br>";

}
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34288690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档