Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将关联数组设置为html输入值?_Php_Arrays_Associative Array - Fatal编程技术网

Php 如何将关联数组设置为html输入值?

Php 如何将关联数组设置为html输入值?,php,arrays,associative-array,Php,Arrays,Associative Array,我是php新手,现在正在学习如何从sql检索数据。 我遇到了一些问题,我在网上找不到任何答案 我希望创建一个html表单,其中包含数据库提供的许多复选框,并且我希望为每个复选框分配一个关联数组,该数组包含数据库中的所有行数据。 例如,如果我的db列中有名称“first name”、“last name”和“age”,则复选框值将为[“first name”=>“xx”,“last name”=>“yy”,age'14'] 到目前为止,我只能将其作为字符串传递,如下所示: value="<?

我是php新手,现在正在学习如何从sql检索数据。 我遇到了一些问题,我在网上找不到任何答案

我希望创建一个html表单,其中包含数据库提供的许多复选框,并且我希望为每个复选框分配一个关联数组,该数组包含数据库中的所有行数据。 例如,如果我的db列中有名称“first name”、“last name”和“age”,则复选框值将为[“first name”=>“xx”,“last name”=>“yy”,age'14']

到目前为止,我只能将其作为字符串传递,如下所示:

value="<?php echo implode(array('key'=>$row['first name'], 'name'=>$row['last name'],'type'=>$row['age']));?>"/>
但当我用post方法传递它时,我会得到一个常规字符串,我无法再次格式化为数组。。这是我的表格代码:

function deleteRow(){
global $conn;
if(!$conn){
    die("connection failed: ".mysqli_connect_error());
}else{
    $query = "SELECT * FROM salary.collage ";
    $result=mysqli_query($conn, $query);
    echo "<table border='1'>";
    echo "<form method='post' id='form_delete_rows' action='test.php'";
    while($row = mysqli_fetch_assoc($result)) {

        ?>
            <tr>      
                <td><input type="checkbox" name="key[]" value="<?php echo implode(array('key'=>$row['key'], 'name'=>$row['name'],'type'=>$row['type']));?>"/></td>
                <td><?php echo $row['key']?></td>
                <td><?php echo $row['name']?></td>
                <td><?php echo $row['type']?></td>
            </tr>


        <?php
       }
     echo"<input type='submit' name='deleteRows' value='delete selected rows'/>";
     echo "</form>";
     echo "</table>";
这是处理检索到的数据的函数:

   if(!empty($_POST["deleteRows"])){
        if(isset($_POST["key"])){

     var_dump($_POST["key"]);

          echo "are you sure you want to delete these records?<br/>";
          echo "<pre><table border='1'>";

            foreach ($_POST['key'] as $select=>$value) {
                echo "<tr>";
                echo "<td>{$select}</td>";
                echo "<td>{$value}</td>";
                echo "</tr>";
            }
        }echo "</table></pre>";
    }

如果数据库tabe有一个唯一的键,例如索引,请像以下那样使用它:

<input type="hidden" name="key[<?=$row['indexname'];?>][<?php echo $k;?>]" value="<?php echo $v;?>"/>
您在调用implode时从未指定粘合字符,所以

abc
我会给你

echo implode($foo, '|'); 
-> a|b|c
只需指定一个粘合字符:


但总的来说,不要这样做。您只是假设数组中的文本不包含分隔符。如果此文本只是通过表单传递,则应使用更好的封装方法,例如json_encode,它不会遭受注入攻击问题。

字符串值是什么样的?为什么你不能将其改革成一个阵列呢?为什么你不能将其改革成一个阵列?删除一行,只需发送该行的唯一id。这就是印刷品看起来的样子:阵列[0]=>阵列[0]看起来是这样的样子:阵列[0]阵列[0]看起来看起来像是这样的:阵列[0]阵列[0]10月19日日(14)9月19日日日(14月14日))9月19日(14日)9月19日日(14日)甲甲甲甲基基基基基基基基(14月14月14日(14日)甲甲甲甲甲14日(14月14月14月14日(14月14日)14日(14月14日)基基自自自自2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009年9月14月14日日日日日日日日日日日日日日日日日日日日日日日日日日日(2)=>3,每个值0,1,2都包含我发送的所有数据,但是作为一个没有键和空格的字符串,所以它是一个大的数据块。你的方法是错误的。为什么要将此数据从表单发送到删除代码?仅用于显示目的?只需使用要显示的键再次查询数据库,或者将此数据放入会话中,然后在下一页将其取出。
$foo = array('a','b',c');
echo implode($foo);
abc
echo implode($foo, '|'); 
-> a|b|c