PHP 的准备语句(用于数据库访问)非常棒。它们不仅有助于保护您的数据库查询,而且对于大型产品来说尤其更有效。然而,有一些问题似乎使这些方法不如我们希望的那么灵活。其一,我们必须使用 bind_result
方法,并传入特定数量的变量。但是,当此代码位于类中并且我们不会立即知道要传递多少个变量时会发生什么情况?幸运的是,有一个解决方案!我将在今天的视频教程中向您展示它是什么。
高级会员:下载此视频(必须登录)
订阅我们的 YouTube 页面以观看所有视频教程!
最终代码
<?php
function read()
{
$parameters = array();
$results = array();
$mysql = new mysqli('localhost', 'root', 'root', 'db') or die('There was a problem connecting to the database');
$stmt = $mysql->prepare('SELECT body FROM posts') or die('Problem preparing query');
$stmt->execute();
$meta = $stmt->result_metadata();
while ( $field = $meta->fetch_field() ) {
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $parameters);
while ( $stmt->fetch() ) {
$x = array();
foreach( $row as $key => $val ) {
$x[$key] = $val;
}
$results[] = $x;
}
return $results;
}
$results = read();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>untitled</title>
</head>
<body>
<?php foreach ($results as $row) : ?>
<p> <?php echo $row['body']; ?> </p>
<?php endforeach; ?>
</body>
</html>