1、PHP 连接 MySQL
面向对象:建立连接eg
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
$conn->close();//最后关闭
2、PHP MySQL 创建数据库------语句CREATE DATABASE
$sql = "CREATE DATABASE myDB"; if ($conn->query($sql) === TRUE) { echo "Database created successfully"; } else { echo "Error creating database: " . $conn->error; }
3、创建数据表--------------------语句CreateTable
$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 "Error creating table: " . $conn->error; }注意:
AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1。
4、插入数据------------------语句INSERT INTO
注意:
a、PHP 中 SQL 查询语句必须使用引号
b、在 SQL 查询语句中的字符串值必须加引号,数值和NULL不需要引号
b、在 SQL 查询语句中的字符串值必须加引号,数值和NULL不需要引号
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; }5、插入多条语句-----------------------mysqli_multi_query() 函数可用来执行多条SQL语句。
$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 "New records created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; }
6、预处理语句-----防止 MySQL 注入,因为参数值发送后使用不同的协议,保证了数据的合法性。
主要用于执行多个相同的 SQL 语句,并且执行效率更高。
1)工作原理:
预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:INSERT INTO
预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:INSERT INTO
MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出
执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
2)优点:
执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
2)优点:
相比于直接执行SQL语句,预处理语句有两个主要优点:
a、预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)
b、绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句
a、预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)
b、绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句
$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(); echo "New records created successfully"; $stmt->close();7、 读取数据-------------语句SELECT column_name(s) FROM table_name
$sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出每行数据 while($row = $result->fetch_assoc()) { echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"]; } } else { echo "0 results"; }
8、 Where 子句
$result = mysqli_query($con,"SELECT * FROM Persons WHERE FirstName='Peter'"); while($row = mysqli_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br>"; }9、Order By 关键词--------- 对记录集中的数据进行排序。
$result = mysqli_query($con,"SELECT * FROM Persons ORDER BY age"); while($row = mysqli_fetch_array($result)) { echo $row['FirstName']." " . $row['LastName']." " . $row['Age']; echo "<br>"; }10、 Update
mysqli_query($con,"UPDATE Persons SET Age=36 WHERE FirstName='Peter' AND LastName='Griffin'");
11、Delete From
mysqli_query($con,"DELETE FROM Persons WHERE LastName='Griffin'");
12、ODBC连接
ODBC是一种应用程序编程接口,使我们有能力连接到某个数据源,只要ODBC连接是可用的,就可以通过ODBC连接去连接任意数据库。
1)创建ODBC连接步骤:
a、在控制面板中打开管理工具图标。
b、双击其中的数据源(ODBC)图标。
c、选择系统 DSN 选项卡。
d、点击系统 DSN 选项卡中的添加。
e、选择Microsoft Access Driver。点击完成。
f、在下一个界面,点击选择来定位数据库。
g、为数据库起一个数据源名(DSN)。
h、点击确定。
b、双击其中的数据源(ODBC)图标。
c、选择系统 DSN 选项卡。
d、点击系统 DSN 选项卡中的添加。
e、选择Microsoft Access Driver。点击完成。
f、在下一个界面,点击选择来定位数据库。
g、为数据库起一个数据源名(DSN)。
h、点击确定。
2)创建到达northwind 的 DSN 的连接,没有用户名和密码。然后创建并执行一条 SQL 语句:
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
3)取回记录
odbc_fetch_row() 函数用于从结果集中返回记录。返回true或者false。
该函数有两个参数:ODBC 结果标识符和可选的行号:odbc_fetch_row($rs)
从记录中取回字段:odbc_result() 函数用于从记录中读取字段。该函数有两个参数:ODBC 结果标识符和字段编号或名称。
从记录中返回第一个字段的值:$compname=odbc_result($rs,1);
返回名为 "CompanyName" 的字段的值:$compname=odbc_result($rs,"CompanyName");
关闭 ODBC 连接:odbc_close($conn);
odbc_fetch_row() 函数用于从结果集中返回记录。返回true或者false。
该函数有两个参数:ODBC 结果标识符和可选的行号:odbc_fetch_row($rs)
从记录中取回字段:odbc_result() 函数用于从记录中读取字段。该函数有两个参数:ODBC 结果标识符和字段编号或名称。
从记录中返回第一个字段的值:$compname=odbc_result($rs,1);
返回名为 "CompanyName" 的字段的值:$compname=odbc_result($rs,"CompanyName");
关闭 ODBC 连接:odbc_close($conn);
eg:
<?php $conn=odbc_connect('northwind','',''); if (!$conn) {exit("Connection Failed: " . $conn);} $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; ?>