php和MySQL的那些事
程序员文章站
2022-05-07 08:38:09
...
新手刚入门PHP,整合了一些关于PHP和MySQL的知识,以备日后查询
主要参考教程为菜鸟:http://www.runoob.com/php/php-mysql-intro.html
1、输入数据库信息
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'myDB';//有数据库存在的情况下输入此条,没有则不用写
2、连接数据库
$conn = new mysqli($servername, $username, $password, $dbname);//没有数据库的情况下,第四个参数不用写
3、检测数据库是否连接成功
if ($conn->connect_error) {
die('连接失败:'.$conn->connect_error);
}
注:1、2和3也可写为:
$conn = mysqli_connect('localhost', 'root', '', 'myDB');
if (mysqli_connect_errno) {
echo '连接失败:'.mysqli_connect_error();
}
4、创建数据库
$sql = 'CREATE DATABASE myDB';
5、检测数据库是否创建成功
if ($conn->query($sql) === TRUE) {
echo '数据库创建成功';
} else {
echo 'Error creating database:'.$conn->error;
}
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
6、创建数据库表
$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)";
7、检测数据库表是否创建成功
if ($conn->query($sql) === TRUE) {
echo 'Table MyGuests created successfully';
} else {
echo '创建数据库表错误:'.$conn->error;
}
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
8、向数据库表中插入数据,两种方式
(1)普通插入数据
列设置 AUTO_INCREMENT (如 “id” 列) 或 TIMESTAMP (如 “reg_date” 列), MySQL 会自动为该列添加值
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', '[email protected]')";
//检测是否插入成功
if ($conn->query($sql) === TRUE) {
echo '新纪录插入成功';
} else {
echo 'Erroe:'.$sql.'<br>'.$conn->error;
}
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
(2)预处理语句插入数据(防止sql注入)
//为mysqli_stmt_prepare()初始化statement对象
$stmt = mysqli_stmt_init($conn);
//预处理及绑定
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email); //s 字符告诉数据库该参数为字符串
//设置参数并执行
$firstname = 'san';
$lastname = 'zhang';
$email = '[email protected]';
$stmt->execute();
$firstname = 'si';
$lastname = 'li';
$email = '[email protected]';
$stmt->execute();
$firstname = 'wu';
$lastname = 'wang';
$email = '[email protected]';
$stmt->execute();
echo '新纪录插入成功';
$stmt->close();/关闭预处理
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
9、读取数据库数据
(1)读取数据库表中所有的信息
//选择表
$sql = "SELECT id, firstname, lastname FROM MyGuests";
//从数据库中取出结果集并赋给复制给变量 $result。
$result = $conn->query($sql);
//判断是否存在数据,函数 num_rows() 判断返回的数据。
if ($result->num_rows > 0) {
//输出数据,如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出
while($row = $result->fetch_assoc()) {
echo "id:".$row["id"]."-Name:".$row["firstname"]." ".$row["lastname"]."<br>";
}
} else {
echo "0 结果";
}
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
(2)使用WHERE选取数据库表中指定行的信息
//从数据库中取出结果集并赋给复制给变量 $result。
$result = mysqli_query($conn, "SELECT * FROM MyGuests WHERE firstname = 'san'");
//输出数据,如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出
while($row = mysqli_fetch_array($result))
{
echo $row['firstname']." ".$row['lastname']." ".$row['email'];
echo '<br>';
}
//也可参照(1)判断是否有数据存在
$conn->close();//关闭数据库,若进行到此步不需往下,则需关闭,还需进行其他步骤则不用写此句
10、使用Order By关键词对数据进行排序(默认升序,降序使用DESC)
语法:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
举例:
$result = mysqli_query($conn, "SELECT * FROM MyGuests ORDER By id");
while($row = mysqli_fetch_array($result))
{
echo $row['firstname']." ".$row['lastname']." ".$row['id']."<br>";
}
mysqli_close($conn);
也可进行多列排序
语法:
SELECT column_name(s)
FROM table_name
ORDER BY column1, column2
11、修改更新数据库内容(UPDATE)
语法:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
注:UPDATE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要更新。如果省去 WHERE 子句,所有的记录都会被更新
mysqli_query($conn, "UPDATE MyGuests SET email='[email protected]' WHERE firstname='san' AND lastname='zhang'");
mysqli_close($conn);
12、删除数据库内容(DELETE)
语法:
DELETE FROM table_name
WHERE some_column = some_value
注:DELETE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要删除。如果省去 WHERE 子句,所有的记录都会被删除
mysqli_query($conn, "DELETE FROM MyGuests WHERE firstname='san'");
mysqli_close($conn);
推荐阅读
-
生成随机字符串和验证码的类的PHP实例
-
关于sql和mysql对于别名不能调用的一些理解
-
php使用gzip压缩传输js和css文件的方法
-
mysql 忘记密码的解决方法(linux和windows小结)
-
MySQL 存储过程和"Cursor"的使用方法
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
Eclipse的PHP插件PHPEclipse安装和使用
-
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
-
PHP实现数组转JSon和JSon转数组的方法示例
-
PHP中nowdoc和heredoc使用需要注意的一点