pdo mysql_PDO MySQL

PDO MySQL

如果文章有成千上万篇,该怎样保存?

数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做Web一般采用MySQL,本书也以MySQL为例。

自学:1天。

假设这个在线阅读项目叫做“reader”,需要一个“文章”表“articles”。建库建表代码如下:

CREATE DATABASE `reader` DEFAULT CHARACTER SET utf8;

USE `reader`;

CREATE TABLE `articles` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`author` varchar(20) DEFAULT NULL,

`title` varchar(50) DEFAULT NULL,

`content` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

然后修改add_article_submit.php,把文章保存到数据库中即可。代码如下:

$input = $_POST;

$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=reader;charset=utf8';

$user = 'root';

$password = '1';

$db = new PDO($dsn, $user, $password); //连接数据库

$sql = 'INSERT INTO `articles` (`author`, `title`, `content`) VALUES (' . '\'' . $input['author'] . '\',\'' . $input['title'] . '\',\'' . $input['content'] . '\');';

$stmt = $db->query($sql); //执行SQL

$id = $db->lastInsertId(); //获得自增id

if (!empty($id)) {

$notice = '保存成功';

} else {

$notice = '出错了';

}

$d = array();

$d['notice'] = array(

'msg' => '保存成功',

);

require_once __DIR__ . '/notice.html';

然后首页index.php把这些文章查出来即可,代码如下:

$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=reader;charset=utf8';

$user = 'root';

$password = '1';

$db = new PDO($dsn, $user, $password);

$sql = 'SELECT `id`, `author`, `title`, `content` FROM `articles` LIMIT 10';

$stmt = $db->query($sql);

$stmt->setFetchMode(PDO::FETCH_ASSOC);

$articles = $stmt->fetchAll();

$d = array();

$d['articles'] = $articles;

require_once __DIR__ . '/index.html';

然后单篇阅读页get_article.php,根据id,查出一篇即可,这样比查出来所有文章合理多了。代码如下:

$input = $_GET;

$d = array();

if (!isset($input['id']) || empty($input['id'])) {

$d['notice'] = array(

'msg' => '出错了:缺少参数',

);

require __DIR__ . '/notice.html';

exit;

}

$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=reader;charset=utf8';

$user = 'root';

$password = '1';

$db = new PDO($dsn, $user, $password);

$sql = 'SELECT `author`, `title`, `content` FROM `articles` WHERE id=' . $input['id'] . ' LIMIT 1';

$stmt = $db->query($sql);

$stmt->setFetchMode(PDO::FETCH_ASSOC);

$r = $stmt->fetchAll();

if (empty($r)) {

$d['notice'] = array(

'msg' => '出错了:查无此文',

);

require __DIR__ . '/notice.html';

exit;

}

$d = array();

$d['article'] = $r[0];

require_once __DIR__ . '/get_article.html';

现在可以发表、查看首页、单篇阅读,功能都实现了。

总结一下

我的技术水平

HTMLPHP数据存储HTTP协议程序员的自我修养装备等级
语义化让内容动起来单机文件GET、POSTPC + Windows0.2
表现与业务分离charsetUnicode0.3
PDOMySQL0.4

已解决的问题

如何用PHP操作MySQL数据库?

使用PDO即可。

PDO、php_mysqli和php_mysql的区别是什么?

请自学了解。注意:php_mysql已废弃。

没钱,对现在的年轻人意味着什么?

luckystar神探:来,讲个故事。 从前有个骚年叫小明。不是姚小明,不是黄小明,也不是郭小明。就是一个普普通通的、扎人堆里找不出来的小明。 男,二十多岁,家境普通。口头禅是「还不是因为老子穷」。 高中时,和… http://zhi.hu/1P8D(分享自知乎)

待解决的问题

index.php、get_article.php等多个文件里都连了数据库,如果密码变了,每个地方都要改,怎么办?

且听下回分解。

访问index.php是正常网页,但访问index.html看到了什么?

请进行实验。且听下回分解。

单引号能保存吗?会导致什么后果?

请按照截图进行实验。且听下回分解。

single_quote_mark.png

单引号实验保存1

sql_injection.png

单引号实验保存2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 8: 可变结构体中的只读实例成员

在之前的文章中我们介绍了 C# 中的 只读结构体(readonly struct)[1] 和与其紧密相关的 in 参数[2]。今天我们来讨论一下从 C# 8 开始引入的一个特性:可变结构体中的只读实例成员(当结构体可变时,将不会改变结构体状态的…

python中valueerror怎么改_如何修复Python ValueError:错误的元数据?

在Ubuntu中运行flexget Python脚本,我收到一个错误:$ flexget series forget "Orange is the new black" s03e01Traceback (most recent call last):File "/usr/local/bin/flexget", line 7, in from flexget import mainFile "…

EntityFramework Core上下文实例池原理

【导读】无论是在我个人博客还是著作中,对于上下文实例池都只是通过大量文字描述来讲解其基本原理,而且也是浅尝辄止,导致我们对其认识仍是一知半解,本文我们摆源码,从源头开始分析希望通过本文从源码的分析&#xff0…

部署Dotnet Core应用到Kubernetes(一)

最近闲了点,写个大活:部署Dotnet应用到K8s。写在前边的话一直想完成这个主题。但这个主题实在太大了,各种拖延症的小宇宙不时爆发一下,结果就拖到了现在。这个主题,会是一个系列。在这个系列中,我会讨论将应…

java 配置参数_给你的JAVA程序配置参数(Properties的使用)

我们在写JAVA程序时,很多时候运行程序的参数是需要动态改变的测试时一系列参数,运行时一系列参数又或者数据库地址也需要配一套参数,以方便今后的动态部署这些变量的初始化,我们在写小DEMO时完全可以写死在JAVA文件中但程序需要发…

JAVA实验报告九异常处理_Java课后练习9(异常处理)

动手动脑1:import javax.swing.*;class AboutException {public static void main(String[] a){int i1, j0, k;ki/j;try{k i/j; // Causes division-by-zero exception//throw new Exception("Hello.Exception!");}catch ( ArithmeticException e){System.out.print…

asp.net core web api之异常

官方建议用app.UseExceptionHandler("/error")来集中处理异常&#xff0c;本例是一个具体的应用。比如项目中有一个ViewModel&#xff0c;要求Name最大长度为5/// <summary>/// 用户模型/// </summary>public class UserModel{/// <summary>/// ID…

java 实现 指派_TAP任务指派问题的汇编实现

近六周的课程设计&#xff0c;编了一个四百行的汇编程序&#xff0c;编的过程很不顺利&#xff0c;遇到种种意想不到的困难&#xff0c;但最终能够实现&#xff0c;可谓欣喜若狂&#xff0c;这期间学到了好多好多&#xff0c;遇到问题怎么精下心来解决&#xff0c;同时对汇编的…

.NET 5.0正式发布,有什么功能特性(翻译)

我们很高兴今天.NET5.0正式发布。这是一个重要的版本—其中也包括了C# 9和F# 5大量新特性和优秀的改进。微软和其他公司的团队已经在生产和性能测试环境中开始使用了。这些团队向我们反馈的结果比较令人满意&#xff0c;它证明了对性能提升及降低Web应用托管成本的机会有积极的…

Java 重写 多态性_java多态性重写overriding和重载overloading的区别

一、概述就Java而言&#xff0c;当有人问&#xff1a;什么是多态&#xff1f;将重载或重写的区别解释为一个可以接受的答案&#xff1f;如果您有一个抽象基类&#xff0c;它定义了一个没有实现的方法&#xff0c;并且您在子类中定义了该方法&#xff0c;那该方法是否仍然覆盖&a…

简单聊聊C#中lock关键字

为了避免多个线程同时操作同一资源&#xff0c;引起数据错误&#xff0c;通常我们会将这个资源加上锁&#xff0c;这样在同一时间只能有一个线程操作资源。在C#中我们使用lock关键字来锁定资源&#xff0c;那lock关键字是如何实现锁定的呢&#xff1f;我们先看一段代码&#xf…

idea如何导入java工程_Eclipse java web项目 ,导入IntelliJ IDEA 完整操作!

或许你用惯了Eclipse&#xff0c;有点排斥其他工具了&#xff0c;你写框架的时候&#xff0c;编译速度是不是特别慢啊&#xff1f;有时候还超过45秒&#xff0c;自动取消运行&#xff01;有时候代码是正常的&#xff0c;却无端端报错&#xff1f;下午吃个饭回来又好了&#xff…

行业思考 | 互联网对传统行业的降维打击

【行业思考】| 作者 / Edison Zhou这是EdisonTalk的第301篇原创内容在周一发布的推文《我在传统行业做数字化转型之预告篇》中&#xff0c;我提到互联网的发展和和竞争对传统行业起到了降维打击的作用&#xff0c;于是就有童鞋私下问我&#xff0c;为何这么说。今天就跟你聊聊这…

java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...

尽管Java提供了一个可以处理文件的IO操作类。 但是没有一个复制文件的方法。 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候。 然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式。1. 使用FileStreams复制这是最经典的方式将一个文件的内…

BCVP开发者说第一期:Destiny.Core.Flow

沉静岁月&#xff0c;淡忘流年1项目简介Destiny.Core.FlowDestiny.Core.Flow是基于.NetCore平台&#xff0c;轻量级的模块化开发框架&#xff0c;Admin管理应用框架&#xff0c;旨在提升团队的快速开发输出能力&#xff0c;由常用公共操作类&#xff08;工具类、帮助类&#xf…

.NET Core 取消令牌:CancellationToken

在 .NET 开发中&#xff0c;CancellationToken&#xff08;取消令牌&#xff09;是一项比较重要的功能&#xff0c;掌握并合理的使用 CancellationToken 可以提升服务的性能。特别在异步编程中&#xff0c;我常常会以创建 Task 的方式利用多线程执行一些耗时或非核心业务逻辑&a…

java char short区别_java 彻底理解 byte char short int float long double

遇到过很多关于 数值类型范围的问题了&#xff0c;在这做一个总结&#xff0c;我们可以从多方面理解不同数值类型的所能表示的数值范围在这里我们只谈论 java中的数值类型首先说byte&#xff1a;这段是摘自jdk中 Byte.java中的源代码从这里可以看出 byte的取值范围&#xff1a;…

程序员过关斩将--从未停止过的系统架构设计步伐

“首先&#xff0c;这篇文章肯定会得罪一些人“其次&#xff0c;此文只代表我个人的意见&#xff0c;仅供参考从分层说起谈到系统架构的分层和系统领域边界的划分&#xff0c;每个架构师&#xff0c;每个技术经理&#xff0c;甚至每个程序员都有自己的一套想法。无论是怎么样的…

java流上传文档把磁盘撑满_BOOT目录磁盘占用满处理

背景&#xff1a;Ubuntu:16.04查看已安装启动镜像dpkg --get-selections |grep linux-image这里会列出目前已经安装的启动镜像&#xff0c;一般分两种&#xff0c;一种状态为“install”&#xff0c;一种为“deinstall”对于"deinstall"的镜像&#xff0c;一般为镜像…

C# 9.0 正式发布了(C# 9.0 on the record)

翻译自 Mads Torgersen 2020年11月10日的博文《C# 9.0 on the record》 [1]&#xff0c;Mads Torgersen 是微软 C# 语言的首席设计师&#xff0c;也是微软 .NET 团队的项目群经理。C# 9.0 正式发布正式宣布&#xff1a;C# 9.0 发布了&#xff01;早在5月&#xff0c;我就写了一…