PHP MySQL 基本操作 & Navicat for MySQL
接下来是MySQL部分的内容,本来早就可以总结了的,但是一直没有空,现在都快忘了,不过也算是重新啊复习复习了。这部分的内容主要是PHP与数据库MySQL间的数据交互,所以要对数据库的相关知识要有一定了解才能更容易理解,当然这里的例子都是非常简单的,但虽然简单,如果对数据库的知识不了解,我还是建议先学习学习数据库的知识再回头学这个,会更简单。
当然还有最重要的一点是你电脑要安装有可运行的MySQL数据库。
1、连接MySQL数据库
注:我用的PHP是7.1.9,PHP 5.3以下的版本是没有mysqli()函数,用的是mysql()函数
<?php
// $conn = mysqli_connect("localhost", "root", "123", "mmorpg"); // 连接方式可用
$servername = "localhost:3306";
$username = "root";
$password = "";
// 连接MySQL数据库
// 参数1 要连接的服务器地址,端口号也要正确(但默认端口号3306,默认端口号可不写)
// 参数2 使用登陆名 默认“root”
// 参数3 登陆密码 默认“”
// 参数4 要连接的数据库名称(可选)
// 上面的参数都要按照自己电脑实际的数据来写。
$mysqli = new mysqli($servername, $username, $password);
if ($mysqli->connect_error) {
die("Connected failed:" . $mysqli->connect_error);
} else {
echo "数据库连接成功!";
}
?>
2、创建数据库
这里假设上面连接部分的代码在单独的一个PHP文件中,如:conn.php 则
<?php
// 路径需填写正确
require 'conn.php';
// 创建数据库
$sql = "CREATE DATABASE mmorpg";
if ($mysqli->query($sql) === TRUE) {
echo "数据库创建成功";
} else {
echo "Error creating database: " . $mysqli->error;
}
// 关闭数据库连接
$mysqli->close();
?>
到这里,我们假设数据库已经存在了,我们可以把链接部分的放到一个文件里,方便后面在任何地方的调用。
创建app_config.php,内容如下:(这个可以当作你项目的配置文件,虽然现在看起来才这点内容,单独放一个文件没必要,但当你的项目慢慢变的复杂时,这样做就很方便了)
<?php
// 定义常量,常量名一般用大写,你可以在你项目的任何地方调用常量
define("SERVERNAME", "localhost");
define("USERNAME", "root");
define("PASSWORD", "");
define("DATABASENAME", "mmorpg");
// 定义常量
?>
然后可以创建:conn.php
<?php
// 将配置文件引入
require 'app_config.php';
$mysqli = new mysqli(SERVERNAME, USERNAME, PASSWORD, DATABASENAME);
if ($mysqli->connect_error) {
die("Connected failed:" . $mysqli->connect_error);
} else {
echo "数据库" . DATABASENAME . "连接成功!";
}
// 设置编码,防止中文乱码
mysqli_set_charset($mysqli, "utf8");
?>
这样,相连接数据库的时候,直接 require ‘conn.php’(引入路径必须正确)就可以直接用 $mysqli 操作数据库了,
3、创建表
<?php
require 'conn.php';
// 判断表示否存在,存在则删除
$sql_drop_tb = "DROP TABLE IF EXISTS test";
// 建表语句
$sql_create_tb = "create table test (
id int primary key,
name varchar(255) character set utf8
)ENGINE=MyISAM DEFAULT CHARSET=utf8;";
if (!$mysqli->query($sql_drop_tb) || !$mysqli->query($sql_create_tb)) { // 新建表
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
} else {
echo "Table creation success!<br>";
}
$mysqli -> close();
?>
4、插入数据
<?php
require 'conn.php';
// 定义函数
function Insert($mysqli, $id, $name)
{
# 使用预处理语句
$sql = "insert into test(id, name) values (?,?)";
$stmt = mysqli_stmt_init($mysqli);
// 预处理语句
if (mysqli_stmt_prepare($stmt, $sql)) {
// 绑定参数
// 参数二:i 表示整数 s 表示字符串 d 表示双精度浮点数 b 表示布尔数, 对应插入字段的类型和个数
mysqli_stmt_bind_param($stmt, 'is', $id, $name);
// 执行插入
if(mysqli_stmt_execute($stmt)) {
echo "数据插入成功!". $mysqli -> affected_rows . "行受影响.";
} else {
echo "数据插入失败!" . $mysqli -> error;
}
}
$stmt -> close();
}
// 调用函数
Insert($mysqli, 7, "洋葱");
# 插入多条数据
$sql = "insert into test(id, name) values (1, '张三');";
$sql .= "insert into test(id, name) values (2, 'Tom');";
$sql .= "insert into test(id, name) values (3, '李四')"
if ($mysqli -> multi_query($sql) === TRUE) {
echo "<br>新纪录插入成功!";
} else {
echo "Error:" . $sql . "<br>" . $mysqli -> error;
}
?>
5、选择显示数据
<?php
require 'conn.php';
// $sql = "select id, name from test";
// $sql = "select id, name from test where id < 4";
$sql = "select id, name from test order by id DESC"; // DESC 根据id降序排序 ASC 根据id升序排序
$result = $mysqli -> query($sql);
echo "<br>";
if ($result -> num_rows > 0) {
// 输出数据
while ($row = $result -> fetch_assoc()) {
// print_r($row);
echo "ID:" . $row['id'] . " - Name:" . $row['name'] . "<br>";
}
} else {
echo "0 结果";
}
$mysqli -> close();
?>
6、更新数据
<?php
require 'conn.php';
$sql = "update test set name = '全蛋' where id = 4";
$mysqli -> query($sql);
if ($mysqli -> affected_rows) {
echo "更新成功!" . $mysqli -> affected_rows . " 行受影响";
} else {
echo "更新失败!" . $mysqli -> affected_rows . " 行受影响";
}
$mysqli -> close();
?>
7、删除数据
<?php
require 'conn.php';
$sql = "delete from test where name = '全蛋'";
$mysqli -> query($sql);
if ($mysqli -> affected_rows) {
echo "删除成功!" . $mysqli -> affected_rows . " 行受影响";
} else {
echo "删除失败!" . $mysqli -> affected_rows . " 行受影响";
}
$mysqli -> close();
?>
这些其实都是很基础的,能不能用的好,还要看你对数据库是否熟悉,和你的封装技术,怎么把这些东西封装成一个更方便的使用的函数。
对于MySQL,这里没有多余的介绍,但如果你还是用小黑窗口进行相关操作的话,这里倒是有一个MySQL界面化的工具推荐。中文,内含**可直接**。(不过能坚持用小黑窗口也挺牛的!)
http://download.csdn.net/download/liangshilin/10014539
建立与MySQL Server的连接
功能很全