PHP与MySQL的交互(mysqli)
近期在学习PHP,这里总结一下PHP与MySQL的交互。
这里我们使用mysqli进行连接。
mysqli扩展允许我们访问MySQL 4.1及以上版本提供的功能。
想深入了解mysqli的信息可以访问下面的网站进行学习:
http://php.net/manual/zh/book.mysqli.php
这里我们根据几个例子来简单了解交互方式。
环境:
wampServer+sublime
创建数据库
例子:建立名为mydb的数据库
<?php
/*
建立连接
其中第一个参数是服务器地址。
其中第二个参数是用户名。
其中第三个参数是密码。
这些参数需要自己查。
*/
$con =new mysqli("localhost","root","123456");
//判断连接是否成功
if (!$con){
//连接失败输出错误。
die('无法连接: ' . mysql_error());
}
//生成SQL语句,创建数据库mydb
$sql = " CREATE DATABASE mydb ";
//调用mysqli的query方法
if ($con->query($sql) === TRUE){
echo "创建成功";
}else{
echo "数据库创建失败: " . mysql_error();
}
//关闭连接
$con->close();
?>
创建数据表
例子:创建一个名User的数据表
SQL语句为:
CREATE TABLE User
(id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
sex VARCHAR(20) NOT NULL,
dob DATE NOT NULL,
email VARCHAR(50) NOT NULL);
代码:
<?php
// 创建连接,这里多的参数是数据库名称。
$con = new mysqli("localhost","root","123456", "mydb");
// 检测连接
if ($con->connect_error) {
die("连接失败: " . $con->connect_error);
}
// 使用 sql 创建数据表
$sql = "CREATE TABLE User (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
sex VARCHAR(20) NOT NULL,
dob DATE NOT NULL,
email VARCHAR(50) NOT NULL
);";
//调用mysqli的query方法
if ($con->query($sql)) {
echo "Table User created successfully";
} else {
echo "创建数据表错误: " . $con->error;
}
//关闭连接
$con->close();
?>
数据的插入
我们向数据表里插入如下数据:
‘测试’, ‘12345678’,’man’,’2016-3-3’,’test@example.com’
SQL语句如下:
INSERT INTO User
(name,password,sex,dob,email)
VALUES
('测试', '12345678','man','2016-3-3','test@example.com');
代码:
<?php
// 创建连接
$con = new mysqli("localhost","root","123456", "mydb");
// 检测连接
if ($con->connect_error) {
die("连接失败: " . $con->connect_error);
}
// 使用 sql 插入数据
$sql = "INSERT INTO User (name,password,sex,dob,email)
VALUES ('测试', '12345678','man','2016-3-3','test@example.com')";
if ($con->query($sql)) {
echo "数据插入成功";
} else {
echo "插入错误: " . $con->error;
}
//关闭连接
$con->close();
?>
数据的预处理
插入数据时为了提高效率和防止注入使用预处理方式。
使用如下语句:
INSERT INTO User
(name,password,sex,dob,email)
VALUES
(?, ?,?,?,?);
在需要输入的信息位置用?代替。
这里要用到如下语句:
1)prepare()–>mysqli_stmt mysqli_prepare ( mysqli link,stringquery )预处理。
2)bind_param()–>将变量绑定到准备好的语句中。
3)execute() –>mysqli_stmt_execute() 执行预处理语句。
例子如下:
<?php
// 创建连接
$con = new mysqli("localhost","root","123456", "mydb");
// 检测连接
if ($con->connect_error) {
die("连接失败: " . $con->connect_error);
}
//sql语句
$sql ="INSERT INTO User (name,password,sex,dob,email)
VALUES (?, ?,?,?,?)";
// 预处理及绑定
$stmt = $con->prepare($sql);
/*
bind_param()
设置每个'?'要装入的值
第一个参数是设置后几个参数的格式。
s->string, i->integer, d->double
第二个参数开始是上边需要装入的值。
*/
$stmt->bind_param("sssss", $name, $password, $sex,$dob ,$email);
// 设置参数并执行
$name = "John";
$password = "111111111111";
$sex = "man";
$dob = "2015-2-2";
$email = "john@example.com";
// 执行预处理语句
$stmt->execute();
echo "新记录插入成功";
//关闭预处理
$stmt->close();
//关闭连接
$con->close();
?>
数据查询
查询数据库中的名字。
<?php
// 创建连接
$con = new mysqli("localhost","root","123456", "mydb");
// 检测连接
if ($con->connect_error) {
die("连接失败: " . $con->connect_error);
}
//查询语句
$sql = "SELECT name FROM User";
$result = $con ->query($sql);
//输出数据
if($result->num_rows>0){
while($row =$result->fetch_assoc()){
echo $row["name"]."<br>";
}
}
$con->close();
?>
PHP与MySQL的交互(mysqli)的更多相关文章
- mysql.default_socket 和 mysqli.default_socket
php.ini 里面mysql.default_socket 和 mysqli.default_socket 设置必须要和mysql里面的值一样,否则连接mysql会提示错误
- mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory
mac 连接mysql的时候提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory [说明1]MAC下M ...
- 【呕心总结】python如何与mysql实现交互及常用sql语句
9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- centos7 配置 zabbix 3 & apache , nginx 与php, mysql 的交互(基本)
#yum install -y https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-server-mysql-3.0.0 ...
- Python与MySQL首次交互
前两天在工作之余研究了一下Python,对基础有了大致了解,就想拿她很MqSQL交互一下. 一开始就遇到了问题,要import MySQLdb,search发现有人说安装mysql-python,于是 ...
- HTML 和 PHP 、MySQL 的交互
为什么要用到数据库? World Wide Web (WWW)不仅仅是一个提供信息的地方.如果你有什么东西,作一个网站,同样可以和全世界的人一起分享.但是,这并不是一件很容易的事.当网站越做越大时,你 ...
- docker内安装php缺少的扩展mysql.so和mysqli.so
首先找到php.ini,放开扩展: 打开php.ini 去掉前面的分号,因为是linux环境所以扩展改为.so文件 进入容器内docker安装扩展的目录: ./docker-php-ext-insta ...
- python中web应用与mysql数据库交互
7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API. 7.1基于数据库的web应用 之前我们把日志数 ...
随机推荐
- 锋利的JQuery —— DOM操作
图片猛戳链接
- 用Chrome插件对自动化测试TestWriter进行录制
1.打开Chrome浏览器,在浏览地址中输入: chrome://extensions/,并勾选开发者模式.如图: 2.点击按钮[加载已解压的扩展程序-].如图: 3.选择Testwriter客户端下 ...
- js判断函数是否存在、判断是否为函数
代码: <script type="text/javascript"> //判断是否为函数 try { if(typeof FunName === "func ...
- Java EE开发平台随手记2——Mybatis扩展1
今天来记录一下对Mybatis的扩展,版本是3.3.0,是和Spring集成使用,mybatis-spring集成包的版本是1.2.3,如果使用maven,如下配置: <properties&g ...
- 部署到IIS报错:HTTP错误500.19,错误代码0x800700d
title=部署到IIS报错:HTTP错误500.19,错误代码0x800700d. 用vs直接运行网站没问题,部署到IIS就报错,由此可知应该是IIS中不支持网站相关配置. 查找发现在web.c ...
- 快速入门系列--WCF--08扩展与新特性
最后一章将进行WCF扩展和新特性的学习,这部分内容有一定深度,有一个基本的了解即可,当需要自定义一个完整的SOA框架时,可以再进行细致的学习和实践. 服务端架构体系的构建主要包含接下来的几个要素:服务 ...
- Apache Tomcat
官网:http://tomcat.apache.org/ Documentation:http://tomcat.apache.org/tomcat-8.0-doc/index.html
- Struts2第一个例子Hello World!
1.首先用eclipse新建一个动态web项目Struts2Demo1: (把Default output floder由build\classes改成WebContent\WEB-INF\class ...
- 详细了解HTML标签内容模型
前面的话 HTML核心的部分莫过于标签(tag)了.标签是用来描述文档中的各自内容基本单元,不同标签表示着不同的含义,标签之间的嵌套表示了内容之间的结构. HTML标签在HTML5中内容模型拓展到了7 ...
- 整理的一些PHP面试题目
1.strlen()和mb_strlen()的作用分别是什么? strlen()和mb_strlen()的作用都是来获取字符串的长度,其中strlen()只针对单字节编码字符,也就是计算字符串的总字节 ...