随着互联网技术的发展,数据库成为了数据存储的重要手段。而PHP是一种广泛使用的服务器端脚本语言,在网站开发中也扮演了重要的角色。在PHP中,查询数据库是开发中常用的操作之一。那么,本文将介绍在PHP中如何进行查询操作。
一、连接数据库
在进行查询操作之前,我们需要首先连接数据库。PHP提供了一个内建函数mysqli_connect(),它用于打开到MySQL服务器的新连接。该函数需要传入服务器地址、用户名、密码以及数据库名称等参数。示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$servername = “localhost”;
$username = “yourusername”;
$password = “yourpassword”;
$dbname = “yourdbname”;
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接是否成功
if (!$conn) {
die(“Connection failed: ” . mysqli_connect_error());
}
echo “Connected successfully”;
?>
在上述代码中,我们传递了四个参数:服务器地址、用户名、密码以及数据库名称。如果连接失败,则通过mysqli_connect_error()函数输出错误信息。如果连接成功,则输出“Connected successfully”。
二、执行查询语句
在连接成功后,我们可以使用mysqli_query()函数执行查询语句。它需要传入两个参数:连接对象和要执行的SQL语句。示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql = “SELECT id, name, age FROM users”;
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo “id: ” . $row[“id”]. ” – Name: ” . $row[“name”]. ” – Age: ” . $row[“age”]. “<br>”;
}
} else {
echo “0 results”;
}
// 关闭连接
mysqli_close($conn);
?>
在上述代码中,我们执行了一条SELECT语句,从users表中查询出id、name和age列的数据。我们使用mysqli_query()函数执行该语句,并将结果存储在$result中。如果查询到了数据,则通过mysqli_fetch_assoc()函数逐行读取结果集中的数据,并输出到页面。如果未查询到数据,则输出“0 results”。最后,我们使用mysqli_close()函数关闭连接。
三、防止SQL注入
虽然以上示例中已经完成了基本的查询操作,但是由于SQL注入的存在,我们在实际开发中必须更加谨慎。而PHP提供了一些函数来预防SQL注入攻击。
mysqli_real_escape_string()函数本函数用于转义SQL查询中的特殊字符,例如单引号、双引号等。在执行查询操作之前,我们可以使用该函数对输入数据进行转义,以避免恶意用户传入SQL注入代码。示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$name = mysqli_real_escape_string($conn, $_POST[name]);
$sql = “SELECT * FROM users WHERE name=$name”;
$result = mysqli_query($conn, $sql);
if ($result) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo “id: ” . $row[“id”]. ” – Name: ” . $row[“name”]. ” – Age: ” . $row[“age”]. “<br>”;
}
} else {
echo “0 results”;
}
// 关闭连接
mysqli_close($conn);
?>
在上述代码中,我们使用了mysqli_real_escape_string()函数对用户输入的$name进行了转义。在构建查询语句时,将转义后的$name插入到SQL语句中,从而避免了SQL注入攻击。
预处理语句在PHP中,我们也可以使用预处理语句来避免SQL注入攻击。预处理语句是在执行SQL语句之前,向数据库发送一条预处理命令,告诉数据库要执行的SQL语句的结构和数据类型。然后,再将查询参数与该预处理语句一起发送至数据库,从而避免SQL注入攻击。示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$stmt = $conn->prepare(“SELECT * FROM users WHERE name=?”);
$stmt->bind_param(“s”, $name);
$name = mysqli_real_escape_string($conn, $_POST[name]);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo “id: ” . $row[“id”]. ” – Name: ” . $row[“name”]. ” – Age: ” . $row[“age”]. “<br>”;
}
} else {
echo “0 results”;
}
// 关闭连接
$stmt->close();
$conn->close();
?>
在上述代码中,我们首先使用$conn->prepare()函数创建了预处理语句,并使用$stmt->bind_param()函数绑定了参数。在执行查询操作之前,我们将用户输入的$name进行转义,并将其赋值给绑定参数中的$s变量。最后,我们使用$stmt->execute()函数执行预处理语句,使用$stmt->get_result()函数获取查询结果,从而完成了查询操作。
四、结语
在PHP中查询数据库是很常见的操作,但由于SQL注入攻击的存在,我们必须更加谨慎。在实际开发中,我们通常会结合以上介绍的防注入措施来执行查询操作。希望本文能对PHP开发中的查询操作有所帮助。
以上就是php 怎么查询的详细内容,更多请关注php中文网其它相关文章!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有佣金分成!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.77ym.top",如遇到无法解压的请联系管理员!
7. 本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
暂无评论内容