【问题标题】:Put MySQL data in a table using a function使用函数将 MySQL 数据放入表中
【发布时间】:2013-09-01 12:01:34
【问题描述】:

我有一个函数应该使用准备好的语句从 MySQL 数据库中获取数据并将其放入一个数组中,并且我有一段代码应该从该函数中获取数据并将其放入一个表中。这两段代码如下。

函数

function list_students($connect) {

if($stmt = mysqli_prepare($connect, "SELECT id,fullname,gender,dateofbirth,passed FROM students ORDER BY fullname ASC LIMIT 0, 20")) {
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $id, $fullname, $gender, $dateofbirth, $passed);
}

$results = array();
while(mysqli_stmt_fetch($stmt)) {
    $results['id'] = $id;
    $results['fullname'] = $fullname;
    $results['gender'] = $gender;
    $results['dateofbirth'] = $dateofbirth;
    $results['passed'] = $passed;
}

return $results;

}

应该从函数中获取数据的代码

<?php                       
$list = list_students($connect);
foreach($list as $variable) {
?>
    <tr>
        <td><? echo $variable["id"]; ?></td>
        <td><? echo $variable["fullname"]; ?></td>
        <td><? echo $variable["gender"]; ?></td>
        <td><? echo $variable["dateofbirth"]; ?></td>
        <td><? echo $variable["passed"]; ?></td>
    </tr>
<?php
}
?>

我可以想象我做错了什么,因为我通过这段代码获得的数据与数据库中的数据相差甚远。重要的是要知道我在表student 中有三行,上面的代码在表中添加了五行。

有人可以帮我解决这个问题,或者让我朝着正确的方向前进吗?

我希望我已经解释得足够清楚了。如果我没有,请告诉我,以便我改进我的问题。

干杯

编辑:

我尝试使用this,但据我所知mysqli_prepare 不支持fetch_array

【问题讨论】:

  • 不幸的是,这不起作用。我读到如果我想使用get_result(),我需要 PHP 5.3.0 或更高版本。根据this,我尝试使用bind_resultfetch,但没有返回任何内容。
  • 那么您必须手动组装阵列。这并不难。

标签: php arrays function foreach mysqli


【解决方案1】:

我搞定了!我用这个作为我的功能:

function beta_get_students() {
    include("config.php");

    if($stmt = mysqli_prepare($connect, "SELECT id,fullname,gender,dateofbirth,passed FROM students ORDER BY fullname ASC LIMIT 0, 20")) {
        mysqli_stmt_execute($stmt);
        $meta = mysqli_stmt_result_metadata($stmt);
        while ($field = $meta->fetch_field()) {
            $params[] = &$row[$field->name];
        }

        call_user_func_array(array($stmt, "bind_result"), $params);

        // returns a copy of a value
        $copy = create_function('$a', 'return $a;');

        $results = array();
        while (mysqli_stmt_fetch($stmt)) {
            // array_map will preserve keys when done here and this way
            $results[] = array_map($copy, $params);
        }
        return $results;
    }
}

把它放在桌子上:

<?php
$list = beta_get_students();
foreach($list as $val) {
?>
        <tr>
            <td><a href="students.php?action=view&id=<? echo $val[0]; ?>"><? echo $val[0]; ?></a></td>
            <td><? echo $val[1]; ?></td>
            <td><? echo $val[2]; ?></td>
            <td><? echo $val[3]; ?></td>
            <td><? echo $val[4]; ?></td>
        </tr>
<?php
    }
?>

我希望任何人都觉得这很有用,非常感谢您花时间阅读本文。

干杯

【讨论】:

    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多