代码之家  ›  专栏  ›  技术社区  ›  Brad

打印出数组的索引以及每个索引的值

  •  0
  • Brad  · 技术社区  · 15 年前

    我有阵列$student[]

    <?php
    $student['id'] = "10402";
    $student['hnumber'] = "H030502";
    $student['name'] = "Larry Wayne";
    
    print_r($student);
    ?>
    

    它打印出来:

    Array ( [id] => 10402 [hnumber] => H030502 [name] => Larry Wayne )
    

    我要完成的是将值存储到数组中,然后将该数组插入到数据库表中。

    所以insert语句应该是:

    $q = "insert into table (id, hnumber, name) VALUES ('10401', 'H030502', 'Larry Wayne')";
    

    我想使用一个数组来存储其中的所有值,并用它们的表字段名标记每个值,因为我将在其中插入数据的字段大约有25个。

    如果有更好的方法来实现这一点,我会全力以赴。

    事先谢谢。

    2 回复  |  直到 15 年前
        1
  •  0
  •   David Kuridža    15 年前

    假设您正在从另一个来源构建一个学生数组,那么这样的情况如何?

    // data from an external source
    $students = array(
        // student 1
        array(
            123,
            'h123',
            'John Smith',
        ),
        // student 2
        array(
            456,
            'h456',
            'Jane Smith',
        ),
        // ... and so on        
    );
    
    $values = array();
    foreach ( $students as $student )
    {
        // @todo, make sure to sanitize values!!!
        $values[] = sprintf('(%s)', implode(', ', $student));
    }
    // build query
    $query = 'INSERT INTO `table` (`id`, `hnumber`, `name`) VALUES '.implode(', ', $values);
    

    请注意,上面的代码是“伪”的,或者是一个想法,如果你想要的话。请确保清除这些值:)

    编辑:还有一件事。如果您想要一个简单的修复,上面的代码是很好的,最好是用于某种简单的数据导入。更好的方法是创建一个处理所有这些逻辑的班学生。

        2
  •  0
  •   BrendonKoz    15 年前

    我只想简单地评论大卫的例子,因为这和我要建议的几乎是一样的,但不幸的是,我不能在评论中添加代码。David从最初的问题中忘记了一件事,那就是您希望将表字段用作数组的一部分-在本例中,作为键字段。在foreach中,可以将数组拆分为键/值对,然后在代码本身中使用它们。

    <?php
        $student['id'] = "10402";
        $student['hnumber'] = "H030502";
        $student['name'] = "Larry Wayne";
        $queryFields = array();
        $queryValues = array();
        $queryString = '';
    
        foreach($student as $key => $value){
            $queryFields[] = '`'.$key.'`';
            $queryValues[] = $value;
        }
    
        $queryString = 'INSERT INTO `table` ('.implode(',', $queryFields).') VALUES ('.implode(',', $queryValues).')';
        //run_query($queryString)
    ?>
    

    因为我不完全熟悉CodeIgniter,所以很可能有一种方法可以将数组和/或对象映射到某种ActiveRecord实现。但是,由于您只是在寻找一种生成查询字符串本身的方法,所以这就可以做到这一点。

    推荐文章