欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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);