赞
踩
提示:这里可以添加本文要记录的大概内容:
PHP MySQL 简介
通过 PHP,我们可以连接和操作数据库。
MySQL 是跟 PHP 配套使用的最流行的开源数据库系统,PHP 与 MySQL 结合是跨平台的。
提示:以下是本篇文章正文内容,下面案例可供参考
连接 MySQL
在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器:
实例
<?php $servername = "localhost"; $username = "root"; $password = "password"; //数据库库名 $dbname = "haha"; //创建连接 $con = new mysqli($servername,$username,$password,$dbname); //测试连接 if($con->connect_error){ die("connect_error".$con->connect_error); } else{ echo "yes"; } //断开数据库连接 $con->close(); ?>
注意: 当你创建一个新的数据库时,你必须为 mysqli 对象指定三个参数 (servername, username 和 password)。
实例运行如下:
数据库测试——连接成功√
补充:创建数据库代码
// 创建数据库
$sql = "CREATE DATABASE myDB";
if (mysqli_query($con, $sql)) {
echo "数据库创建成功";
} else {
echo "Error creating database: " . mysqli_error($con);
}
一个数据表有一个唯一名称,并有行和列组成。
CREATE TABLE 语句用于创建 MySQL 表。
创建表前,我们需要使用 use myDB 来选择要操作的数据库:
use myDB;
我们将创建一个名为 “MyGuests” 的表,有 5 个列: “id”, “firstname”, “lastname”, “email” 和 “reg_date”:
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
上表中的注意事项:
每个表都应该有一个主键(本列为 "id" 列),主键必须包含唯一的值。
实例 (MySQLi - 面向对象)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 使用 sql 创建数据表 $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; if ($conn->query($sql) === TRUE) { echo "Table MyGuests created successfully"; } else { echo "创建数据表错误: " . $conn->error; } $conn->close(); ?>
<?php $servername = "localhost"; $username = "root"; $password = "password"; //数据库库名 $dbname = "haha"; //创建连接 $con = new mysqli($servername,$username,$password,$dbname); //测试连接 if($con->connect_error){ die("connect_error".$con->connect_error); } else{ echo "Connected\r\n"; } //增语句 $sql = "INSERT INTO table1(username,passwoad) VALUES('tom','123456')"; //检测是否成功 if($con->query($sql)==TRUE){ echo "insert succeeded"; }else{ echo "insert faild"; } //断开数据库连接 $con->close(); ?>
运行上述代码结果如下:
可以使用 MySQLi 或者 PDO 向 MySQL 插入数据
在创建完数据库和表后,我们可以向表中添加数据。
以下为一些语法规则:
PHP 中 SQL 查询语句必须使用引号
在 SQL 查询语句中的字符串值必须加引号
数值的值不需要引号
NULL 值不需要引号
INSERT INTO 语句通常用于向 MySQL 表添加新的记录:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
在前面的中我们已经创建了表 “MyGuests”,表字段有: “id”, “firstname”, “lastname”, “email” 和 “reg_date”。 现在,让我们开始向表填充数据。
注意: 如果列设置 AUTO_INCREMENT (如 "id" 列) 或 TIMESTAMP (如 "reg_date" 列),,我们就不需要在 SQL 查询语句中指定值; MySQL 会自动为该列添加值。
以下实例向 “MyGuests” 表添加了新的记录:
实例(MySQLi - 面向对象)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if ($conn->query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
实例 (MySQLi - 面向过程)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if (mysqli_query($conn, $sql)) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?>
也可以使用 MySQLi 或者 PDO 向 MySQL 插入多条数据
mysqli_multi_query() 函数可用来执行多条SQL语句。
以下实例向 “MyGuests” 表添加了三条新的记录:
实例 (MySQLi - 面向对象)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建链接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查链接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')"; if ($conn->multi_query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
注意:每个SQL语句必须用分号隔开。
当然还可以使用使用预处理语句——插入语句
mysqli 扩展提供了第二种方式用于插入语句。
我们可以预处理语句及绑定参数。
mysql 扩展可以不带数据发送语句或查询到mysql数据库。我们可以向列关联或 “绑定” 变量。
mysqli_stmt_bind_param() 中的代码:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
该函数绑定参数查询并将参数传递给数据库。第二个参数是 “sss” 。以下列表展示了参数的类型。 s 字符告诉 mysql 参数是字符串。
每个参数必须指定类型,来保证数据的安全性。通过类型的判断可以减少SQL注入漏洞带来的风险。
预处理语句对于防止 MySQL 注入是非常有用的。
预处理语句及绑定参数
预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。
预处理语句的工作原理如下:
预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 “?” 标记 。例如:
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
MySQLi 预处理语句
以下实例在 MySQLi 中使用了预处理语句,并绑定了相应的参数:
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 预处理及绑定 $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $firstname, $lastname, $email); // 设置参数并执行 $firstname = "John"; $lastname = "Doe"; $email = "john@example.com"; $stmt->execute(); $firstname = "Mary"; $lastname = "Moe"; $email = "mary@example.com"; $stmt->execute(); $firstname = "Julie"; $lastname = "Dooley"; $email = "julie@example.com"; $stmt->execute(); echo "新记录插入成功"; $stmt->close(); $conn->close(); ?>
就是增删改查里面的“查”语句
从 MySQL 数据库读取数据
SELECT 语句用于从数据表中读取数据:
SELECT column_name(s) FROM table_name
我们可以使用 * 号来读取所有数据表中的字段:
SELECT * FROM table_name
简单的查语句↓
<?php $servername = "localhost"; $username = "root"; $password = "password"; //数据库库名 $dbname = "haha"; //创建连接 $con = new mysqli($servername,$username,$password,$dbname); //测试连接 if($con->connect_error){ die("connect_error".$con->connect_error); } else{ echo "Connected".'<br/>'; } //查语句 $sql = "SELECT * FROM table WHERE id <10"; //执行sql语句并返回结果到$result结果集 $result = $con->query($sql); //如果数据库可以取出东西 if ($result->num_rows>0) { // 循环去查找result里面到所有内容 while($row = $result->fetch_assoc()){ echo $row['username'].'-----------'.$row['password'].'<br/>'; } }else{ echo "Nothing"; } //断开数据库连接 $con->close(); ?>
使用 MySQLi
以下实例中我们从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上:
实例 (MySQLi - 面向对象)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 结果"; } $conn->close(); ?>
以上代码解析如下:
首先,我们设置了 SQL 语句从 MyGuests数据表中读取 id, firstname 和 lastname 三个字段。之后我们使用该 SQL 语句从数据库中取出结果集并赋给复制给变量 $result。
函数 num_rows() 判断返回的数据。
如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出。 while() 循环出结果集,并输出 id, firstname 和 lastname 三个字段值。
增删改查的“改”语句
UPDATE 语句用于中修改数据库表中的数据。
更新数据库中的数据
UPDATE 语句用于更新数据库表中已存在的记录。
首先还是一个简单实例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。