如何在PHP中存储和获取两个值?

如何在PHP中存储和获取两个值?,php,sql,mysqli,Php,Sql,Mysqli,这是process_upcategory.php 我想通过类别id或类别名称,用另一个类别名称/id更新类别名称或类别id。 我是php新手 <?php require('includes/config.php'); if(!empty($_POST)) { $msg=array(); if(empty($_POST['cat'])) { $msg[]="Please full fill al

这是process_upcategory.php 我想通过类别id或类别名称,用另一个类别名称/id更新类别名称或类别id。 我是php新手

<?php
     require('includes/config.php');
    if(!empty($_POST))
    {
        $msg=array();
        if(empty($_POST['cat']))
        {
            $msg[]="Please full fill all requirement";
        }

        if(!empty($msg))
        {
            echo '<b>Error:-</b><br>';

            foreach($msg as $k)
            {
                echo '<li>'.$k;
            }
        }
        else
        {


            $cat_nm=$_POST['cat[0]'];
            $cat_id=$_POST['cat[1]'];

            $query= "UPDATE `category` SET cat_nm='$cat_nm' WHERE cat_id='$cat_id'";

            mysqli_query($conn,$query) or die("can't Execute...");

            mysql_close($link);
            header("location:category.php");
        }


    }

    else
    {
        header("location:index.php");
    }
?>


新类别


我想通过类别id或类别名称,用另一个类别名称更新类别名称。我得到了未定义的索引cat[0]和cat[1]

当您用[]结束输入名称时,它将被php转换为数组。在这种情况下,获取值的正确方法如下:

$cat=$_POST['cat'];
$cat_nm=$cat[0];
$cat_id=$cat[1];

我将这两个例程组合成一个脚本

我在表单中添加了“sub”以区分表单提交与否

我在查询结果循环中使用了list()。
使用了
mysqli\u fetch\u数组($result,mysqli\u NUM)
而不是
mysqli\u fetch\u assoc($res)

使用foreach()循环遍历$\u POST['cat']

将“值”添加到
以保留id

通过使用herdoc消除了从HTML模式到PHP模式的切换

<?php
if (intval($_POST['sub']) == 1){
  $newcat = $_POST['new'];
  foreach($_POST['cat'] as $key=>$value){
    if(strlen($newcat[$key]) > 0){
      mysqli_query($conn,"UPDATE `category` SET `cat_nm`='$newcat[$key]' WHERE `cat_id`='$value'");
    }
  }
}
echo <<<EOT
<html><head><style>h4,h3{color:darkgreen;margin:.2em;}</style></head><body>
<form action="#" method='POST'>
  <h3>UPDATE CATEGORY</h3>    
  <h4>Old Category</h3> 
  <select name="cat[]" multiple>
EOT;

$sql="SELECT `cat_nm`, `cat_id` FROM `category` ";
$result=mysqli_query($conn,$sql);
while(list($cat_nm,$cat_id) = mysqli_fetch_array($result, MYSQLI_NUM)){
    echo "  <option value=\"$cat_id\">$cat_nm</option>\n";
}
echo <<<EOT
  </select>
  <h3>New Category</h3>
  <input type="text" name="new[0]" /><br/>
  <input type="text" name="new[1]" /><br/>
  <input type="hidden" name="sub" value="1" /><br/>
  <input type="submit" value="  UPDATE  />
</form> 
</body></html>
EOT;
?>

检查错误,然后告诉我们那些不需要提及的混合不同的mysql api和要连接的api是未知的。未定义的索引cat[0]和cat[1]将cat_id放在单独的
中是错误的,会使事情复杂化。名称和ID应在单个
中传递。名称和ID应使用相同的cat[]索引传递。
<?php
if (intval($_POST['sub']) == 1){
  $newcat = $_POST['new'];
  foreach($_POST['cat'] as $key=>$value){
    if(strlen($newcat[$key]) > 0){
      mysqli_query($conn,"UPDATE `category` SET `cat_nm`='$newcat[$key]' WHERE `cat_id`='$value'");
    }
  }
}
echo <<<EOT
<html><head><style>h4,h3{color:darkgreen;margin:.2em;}</style></head><body>
<form action="#" method='POST'>
  <h3>UPDATE CATEGORY</h3>    
  <h4>Old Category</h3> 
  <select name="cat[]" multiple>
EOT;

$sql="SELECT `cat_nm`, `cat_id` FROM `category` ";
$result=mysqli_query($conn,$sql);
while(list($cat_nm,$cat_id) = mysqli_fetch_array($result, MYSQLI_NUM)){
    echo "  <option value=\"$cat_id\">$cat_nm</option>\n";
}
echo <<<EOT
  </select>
  <h3>New Category</h3>
  <input type="text" name="new[0]" /><br/>
  <input type="text" name="new[1]" /><br/>
  <input type="hidden" name="sub" value="1" /><br/>
  <input type="submit" value="  UPDATE  />
</form> 
</body></html>
EOT;
?>