1. 建立数据库连接
要从MySQL里选数儿,咱得先把线下搞定。这可是基础中的基础,没这步啥也玩不转。PHP提供了两个好用的扩展——MySQLi和PDO,帮咱们轻松搞定。
利用MySQLi延伸来连结数据库真的很简单!就得填上数据库的主机、账号、密码和名字,程序大概长这个样子:
php 创建一个连接数据库的变量:$mysqli,把这个连接参数设置为:"localhost"(服务器地址),"username"(用户名),"password"(密码)和"database_name"(数据库名称)。 if ($mysqli->connect_errno) { 连接失败,无法连上MySQL服务器了。$mysqli->connect_error这种东东就是报的错误信息! exit(); }
这儿,我们新搞了一个MySQLi小伙伴儿,给它塞进去些必要的信息。如果连不上的话,就会弹出提示告诉你哪儿出错,然后乖乖地结束运行!
同样地,用PDO扩展连数据库特轻松。只需调出PDO构造函数,传点信息就成!
try {
首先,我们需要创建一个新的PDO对象。就像这样:这里的’host’=localhost’表示服务器地址,’dbname=’database_name’则是数据库名,’username’和’spassword’分别是你的用户名和密码。
设好 pdo 的错误模式为异常,就这么简单!
} catch (PDOException $e) {
“连接失败了,错误信息是$e的getMessage()。
在这几行里,咱们通过 try-catch 块儿来捕捉各种可能出现的问题,然后把错误信息给大家看。
2. 准备查询语句
搞定连线后,咱得搞个查询语句!无论MySQLi或PDO,这部分都很重要,因为得确保俺们的SQL指令妥妥滴,能把数据库里想要的信息全给挖出来。
用MySQLi来编写查询表达式的话,咱们得用’prepare’这个方法。比如,如果要选”users”这张表的全部内容,咱们就这么写:
先要准备好查询语句,就是从users表里选所有的数据。
if (!$stmt) {
“失败!(“. $mysqli->errno. “) “. $mysqli->error ,我们要怎么做?
$servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); }
咱们这儿就是用 `prepare` 给查询操练了一下,瞅瞅能不能行。
在用PDO操作查询语句前,记得先用 `prepare` 的魔法棒!
php 你可以简单地这样定义:$sql = "SELECT * FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "
"; } } else { echo "0 结果"; } $conn->close();"SELECT * FROM users",然后放入到$pdo里,变成一个$stmt变量。
$error = $pdo->errorInfo();
"准备失败了: ".$错误消息的第3点。
瞧这儿这个代码块儿,我们还是得用下 `prepare` 手法儿来搞定查数据的事儿,还得看看成不成功。
3. 执行查询并获取结果
做完查询语句之后,你要做的就是敲回车,然后等着结果出来就行了。这个过程就是把数据从数据库里找出来的重点不论是用MySQLi还是用PDO,操作都是差不多滴。
用MySQLi找数据,就得用那个 `execute` 的方法来搞定。
if (!$stmt->execute()) {
"执行失败啦:(". $stmt->errno. ") ". $stmt->error;$servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("连接失败: " . $e->getMessage()); }$result就是那个火车头,它把$stmt的结果拉出来了。
先查再取,这就是这段代码的大事情了。
用 PDO 想查点啥的话,就得使 `execute`~php$error = $stmt->errorInfo();
“操作失败,错误代码是$error[2]”。
读完了查询,把结果直接取出来,就像这样:$result = $stmt->fetchAll(PDO::FETCH_ASSOC)。
$sql = "SELECT * FROM users"; $stmt = $conn->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(); foreach($result as $row) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "
"; } $conn = null;我们也可以query查完后,再用fetchAll来把所有的结果都打包带走哦~
4. 使用循环遍历结果数据并输出
最后一步就是查找出数据然后展示出来!这个步骤里头,你得用个圈儿来依次浏览每个搜到的数据,而且还得对每条数据做点儿啥。不管是用MySQLi还是PDO,找数据和展示的方法都是差不多滴。
用MySQLi来翻找结果的时候,就得用上`fetch_assoc`这个招数了。
就这样,当$row等于$result的第一行时,我们开始循环。
在这里,我们可以看到每个用户的 ID(编号),姓名和邮箱地址。分别是:”ID: “. $row[‘id’]. “, 名字: “. $row[‘name’]. “, 邮箱: “. $row[’email’].”
“;
这段码就是用来取每条消息里的 ID、名字还有邮箱,然后打印出来看看~
用 PDO 查数据,直接用 `fetchAll` 就能拿到结果集了。
// 使用 MySQLi 扩展 $servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "SELECT * FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "
"; } } else { echo "0 结果"; } $conn->close();foreach ($result as $row) {
这儿,咱就简单地把 `fetchAll` 的结果拿出来挨个儿看,然后把每个客户的 ID,名字还有邮件地址打印出来。
总结
看完这个流程,咱就能轻松用 PHP 从 MySQL 取数据出来!管它是用 MySQLi 还是 PDO,操作起来就俩字儿——简单!希望这篇小文能帮到你更深入了解和运用 PHP 跟 MySQL 的数据交流~
向读者提问
你有没有在用PHP和MySQL搞数据交互时遇到啥难题?快来评论区说说你是怎么搞定它们的!
// 使用 PDO 扩展 $servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("连接失败: " . $e->getMessage()); } $sql = "SELECT * FROM users"; $stmt = $conn->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(); foreach($result as $row) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "
"; } $conn = null;
评论0