效果图
![1569725112480723.png QQP4PVNYRRU`~X9]Q~1~1FU.png](https://img.php.cn/upload/image/870/353/559/1569725112480723.png)
![1569725116542352.png H520END1CMTM61ICXL]N(7T.png](https://img.php.cn/upload/image/142/888/873/1569725116542352.png)
![1569725120597470.jpg `Y{VH41U]RZ[BHSTZ6{{10J.jpg](https://img.php.cn/upload/image/454/322/635/1569725120597470.jpg)
评估在提交后,可以加载到当前页面,
数据库的pdo连接的过程
//1,连接数据库
//2,设计sql执行语句, 操作方式 - 表 - 条件 - 要操作的字段,-
// sql语句最后一个结束字母不能加逗号
//3,把sql语句加载到变量
//4,给加载的变量绑定数据源
//5,执行 加载sql语句的变量 用循环方式读取数组内容到数据库
//6,返回数据和错误报告给客户确认
//7,从数据库中读取的数据要指定数据类型以便在数据比对过程中加强数据的安全性。数值性与数值的字符串化。
以下为各部分的数据连接部分代码
1 设计数据库连接
引入数组,设计dns变量,增加代码的灵活性
在其它文中 引入此文件
include __DIR__ . '/db.php';
<?php
$dbb = [
'type' => 'mysql',
'host' => '127.0.0.1', // 或者写 app.io
'char' => ';charset=utf8',
'dbname' => 'app.io', //是数据库名,不是表名
'user' => 'root',
'password' => 'root',
//以下是连接符,减少下dns的代码结构;
'hostbol' => ':host=',
'dbbol' => ';dbname=',
];
$dns = $dbb['type'] . $dbb['hostbol'] . $dbb['host'] . $dbb['dbbol'] . $dbb['dbname'] . $dbb['char'];
try {
$pdo = new PDO($dns, $dbb['user'], $dbb['password']);
// print_r($comm);
} catch (PDOException $th) {
die('数据库未能连接1' . $th->getMessage());
}点击 "运行实例" 按钮查看在线实例
2, 向数据添加数据
从数组中读取数据
$inmov = 'INSERT INTO movies SET
`mov_id`=:mov_id ,
`name`= :name ,
`image`= :image ,
`detail`=:detail ,
`cate_id`=:cate_id';
$movdata = $pdo->prepare($inmov);
$movdata->bindParam('mov_id', $mov_id);
$movdata->bindParam('name', $name);
$movdata->bindParam('image', $image);
$movdata->bindParam('detail', $detail);
$movdata->bindParam('cate_id', $cate_id);
foreach ($movies as $k => $v) {
$mov_id = $v['mov_id'];
$name = $v['name'];
$image = $v['image'];
$detail = $v['detail'];
$cate_id = $v['cate_id'];
$movdata->execute();
};
echo "成功导入" . $movdata->rowCount() . "条数据";点击 "运行实例" 按钮查看在线实例
3,从数据库中 读取数据到数组
// 读取电影数据到数组变量 while+fetch
$movsel = 'SELECT * from movies';
$movseldata = $pdo->prepare($movsel);
$movseldata->execute();
//fetch+while 循环取值, 在条件内取出,可以取出将取出值赋值给数组内部 要加[]
while ($m = $movseldata->fetch()) {
$movies[] = $m;
};点击 "运行实例" 按钮查看在线实例
// 读取分类数据到数组变量 fetchall $catesel = 'SELECT * FROM cates'; $cateseldata = $pdo->prepare($catesel); $cateseldata->execute(); $cates = $cateseldata->fetchAll();
点击 "运行实例" 按钮查看在线实例
注: // 以上数据没有加错误信息返回数据
4, 评论信息的添加和读取
在当前form表单中添加一个电影识别码 通过get 方式传递到评估添加页面
</div> <form action="../9192/comm.php" methond="GET"> <dl> <dt><label for="">发表评论</label></dt> <dt><textarea class="tarea" name="cont" placeholder="评论内容" rows="10" cols="30"></textarea></dt> <dt><label for="">用户名</label><input type="text" id="username" name="username" placeholder="you name"></dt> <!-- 传递一个隐藏的电影识别码 --> <dt><input type="hidden" id="hiedden" name="mov_id" value="<?php echo $mov_id; ?>"></dt> <dt><button type="submit">提交</button></dt> </dl> </form>
点击 "运行实例" 按钮查看在线实例
在comm.php 头部添加返回前页链接,
// _get 提交返回到之前的页面 添加数据
$referer = $_SERVER['HTTP_REFERER']; //来路信息。就是上一页
header("Location: $referer"); //浏览器跳转点击 "运行实例" 按钮查看在线实例
将get数据添加到评论数据表中。
// 绑定 写入指定数据到数据库
// 写入数据库连接信息
include __DIR__ . '/db.php';
//先写明 sql 语句格式, 本格式是 先声明要插入的字段,
//要插入的mov_id username cont add_time四个字段信息,用空变量名代替
// :mov_id :username :cont :add_time
$insql = 'INSERT INTO `COMM` SET
`mov_id`= :mov_id,
`username`= :username,
`cont`= :cont,
`add_time`= :add_time';
//把插入mysql语句 写入 php 变量 $ins
$ins = $pdo->prepare($insql);
//把需要插入的数据指定到对应的 字段上
//读取信息到变量上
$mov_id = $_GET['mov_id'];
$username = $_GET['username'];
$cont = $_GET['cont'];
$add_time = gmdate('Y.m.d H:i:s', time() + 8 * 3600);
//指定变量到对应的数据字段上
$ins->bindParam('mov_id', $mov_id);
$ins->bindParam('username', $username);
$ins->bindParam('cont', $cont);
$ins->bindParam('add_time', $add_time);
//执行mysql操作, 把邦定的数据加入数据中
$ins->execute();
// 关闭数据库
$pdo = null;点击 "运行实例" 按钮查看在线实例
将评论数据加载到指定的电影下
// 读取 指定数据 至数组变量
include __DIR__ . '/db.php';
// $mov_id = intval($_GET['mov_id']);
//创建读取评论msysql语句 查询条件的值用空变量名 :mov_id 代替
$selsql = ' SELECT * FROM COMM WHERE
`mov_id`=:mov_id
ORDER BY
`add_time` desc';
//把查询mysql的语句写入变量 $sel
$sel = $pdo->prepare($selsql);
//指定要查询条件的变量值,
//本案例是get中 $mov_id 值
//把get中的$mov_id值 赋值给 查询条件中的 :mov_id
$sel->bindParam('mov_id', $mov_id);
//执行 >execute() sel内容即查询
$sel->execute();
//将读取所有查询结果给到变量$pinglu
$pinglu = $sel->fetchAll();
foreach ($pinglu as $v) {
echo '<p class="cpp"><span class="coo" > <span> 用户 : </span>';
echo $v['username'] . " ";
echo '</span><span class="coo"> <span>评论时间 : </span>' . $v['add_time'];
echo '</span></p><p class="cmm">';
echo $v['cont'];
echo '</p>';
}
;点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号