在php中创建动态变量以更新mysql中的多行

m4pnthwp  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我目前正在一个网站的更新配置文件部分工作,我正在创建一个有趣的。在更新简介的这一部分中,企业主可以更新他们的餐厅菜单(菜单由类别(开胃菜、主菜等)、菜单项和过敏原组成)。
现在网站正在以输入框格式打印企业主以前提交的内容,这样企业主只需删除并重新输入新信息。然而,我们不知道每个餐厅有多少菜单项,所以我设计了一个系统来动态地更新每一个被改变的菜单项。

<?php
        $sql="SELECT * from menu_item as m, allergen as a WHERE a.restaurant_id=m.restaurant_id  AND m.menu_item_id=a.menu_item_id AND m.restaurant_id='".$rest_id."'";
        $result11=mysqli_query($con,$sql);
        if (mysqli_num_rows($result)==0){
            echo "<strong>You have not submitted any menu information</strong><br><br>";
            echo "Please enter your menu information here:    ";
            echo '<a href="http://cgi.soic.indiana.edu/~team01/BO_interfaces/menu_form.html" class="contbtn">Create Menu</a>';
        }
        else{
        $i=0;
            echo "<table border='1' cellpadding='10'><tr><th>Category</th><th>Menu Item</th><th>Allergen</th></tr>";
        while($rows=mysqli_fetch_assoc($result11)) {
        echo '<tr><td><input type="text" name="category'.$i.'"value="'. $rows['category']. '"</td><br>';
        echo '<td><input type="text" name="menu_item'.$i.'" value="'. $rows['menu_item']. '"</td><br>'; 
        echo '<td><input type="text" name="allergen'.$i.'" value="'. $rows['allergen']. '"</td><br>';
        echo '<td><input type="hidden" name="id'.$i.'" value="'. $rows['menu_item_id']. '"</td></tr><br>';
        $i++;
        }
        }
    echo "</table>";
    var_dump(mysqli_num_rows($result11));
    // var_dump($_POST);
    $count=0;
        while ($count<=mysqli_num_rows($result11)){
            ${"category".$count}=mysqli_real_escape_string($con, $_POST['category'.'$count']);
            $count++;
        }
        var_dump($category0);
        ?>

这就是底部的while循环发挥作用的地方。我想能够动态创建变量的类别,菜单项和过敏原。然后我希望能够在同一while循环(mysqli\u query)中创建$result变量,然后相应地更新行。但是,现在我的最后一个var\u dump返回的值是“”,它告诉我要么连接html name属性错误(first while循环),要么在最后一个while循环中连接有问题。有人知道我做错了什么吗?

yqhsw0fo

yqhsw0fo1#

$_POST['category'.'$count'] 你的第二个循环应该是 $_POST['category'.$count] . 您也只希望在表单提交后运行此代码(我假设您发布的代码不是您的完整脚本,因此不清楚是否发生了这种情况)-否则您将获得原始值,而不是用户在表单中所做的任何更改。
一般来说,如果您可以将提交的数据放入一个多维数组中,而不必动态地创建变量,那么您的工作会更轻松。请参阅上的“如何在html表单中创建数组?”一节http://php.net/manual/en/faq.html.php. 在你的情况下,我会这样做:

// (in your first while loop)
echo '<input type="text" name="menu['.$i.'][category]" value="'. htmlspecialchars($rows['category']). '"><br>';
echo '<input type="text" name="menu['.$i.'][menu_item]" value="'. htmlspecialchars($rows['menu_item']). '"><br>';
// (etc.)

然后你用这样的方法循环:

foreach ($_POST['menu'] as $menuRow) {
    // you now have:
    // $menuRow['category']
    // $menuRow['menu_item']
    // ...and so on
}

您还希望转义输出的输入值 htmlspecialchars() 正如我上面所说。

相关问题