我有一个函数应该从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
。
答案 0 :(得分:0)
我搞定了!我用它作为我的功能:
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
}
?>
我希望有人觉得这很有用,非常感谢您花时间阅读本文。
干杯