利用数据库替换原来写在header.php数据
处理步骤:
1、写好连接数据库文件:
实例
<?php $db = [ 'type'=>'mysql', 'host'=>'127.0.0.1', 'dbname'=>'chenqingxuan', 'username'=>'root', 'password'=>'cqx07231950' ]; $dsn = $db['type'].':host='.$db['host'].';dbname='.$db['dbname']; try { $pdo = new PDO($dsn, $db['username'], $db['password']); // print_r($pdo); } catch (PDOException $e) { echo '数据库报错:'.$e->getMessage(); } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
该文件实际起左右语句:
$pdo = new PDO($dsn, $db['username'], $db['password']);
new PDO(参数1,参数2,参数3)
其中:
参数1:$dsn代表那一台计算机里哪个类型的数据库,数据库叫什么。(即定位访问数据库地址)
参数2:数据登录名
参数3:数据库登陆密码
其通过数据将$dsn拼接好。即是拼成数据库定位地址:'mysql:host=127.0.0.1;dbname=chengqingxuan'
2、header.php文件改造。引入数据库连接文件connect.php,删除原来页面数组,改为从数据库中获取
实例
<?php // 影视剧数组 include __DIR__ . '/connect.php'; $sql_movies = 'SELECT * FROM movies'; $stm_movies = $pdo->prepare($sql_movies); $stm_movies -> execute(); // print_r($stm->fetchAll(PDO::FETCH_ASSOC)); $movies = $stm_movies->fetchAll(PDO::FETCH_ASSOC); $sql_category = 'SELECT * FROM category'; $stm_category = $pdo->prepare($sql_category); $stm_category -> execute(); // print_r($stm_category->fetchAll(PDO::FETCH_ASSOC));die; $cates = $stm_category->fetchAll(PDO::FETCH_ASSOC); $sql_system = 'SELECT * FROM `system` LIMIT 1'; $stmt_system = $pdo->prepare($sql_system); $stmt_system->execute(); $system = $stmt_system->fetch(PDO::FETCH_ASSOC); // var_dump($stmt_system->fetch(PDO::FETCH_ASSOC));die; var_dump($system); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="css/style.css"> <meta name="description" content="<?php echo $system['desc'] ?>"> <meta name="keywords" content="<?php echo $system['key'] ?>"> <title><?php echo $system['title'] ?></title> </head> <body> <!--头部导航--> <div class="header"> <ul class="nav"> <li><a href="index.php">首页</a></li> <?php foreach ($cates as $cate) : ?> <li><a href="list.php?cate_id=<?php echo $cate['cate_id']; ?>"><?php echo $cate['alias'] ?></a></li> <?php endforeach; ?> </ul> </div>
运行实例 »
点击 "运行实例" 按钮查看在线实例
获取数据过程说明:
$sql = 'SELECT * FROM movies';
此定义查询数据库条件,即是设定好访问哪个数据库,获取数据库中哪个数据。
$stm = $pdo->prepare($sql_movies);
预处理:此类似建立查询指引,此语句阶段暂没有建立联系。
可理解为:通过建立连接,准备指向访问某个数据库
$stm -> execute();
执行指引建立,则通过可访问$stm将指引到某个数据库查询数据
$movies = $stm_movies->fetchAll(PDO::FETCH_ASSOC);
取值,将某个数据从数据库取出
取出函数有fetchAll() fetch()等 其中参数PDO::FETCH_ASSOC为查询是的类型。
实际效果:
问题1:取出值无法打印。赋值后可打印出来
$sql_system = 'SELECT * FROM `system` LIMIT 1';
$stmt_system = $pdo->prepare($sql_system);
$stmt_system->execute();
$system = $stmt_system->fetch(PDO::FETCH_ASSOC);
// var_dump($stmt_system->fetch(PDO::FETCH_ASSOC));die;
// var_dump($system);
即是:
var_dump($stmt_system->fetch(PDO::FETCH_ASSOC));无法打印值。
ar_dump($system); 可以正常获取打印。