PHP数据库操作指南
在当今的Web开发中,数据库已经成为了不可或缺的一部分,PHP作为一种流行的服务器端脚本语言,其对数据库的操作也变得越来越重要,本文将为你介绍PHP数据库操作的基本知识,包括如何连接数据库、执行SQL语句以及处理结果集等。
我们需要了解PHP与数据库之间的连接方式,在PHP中,有多种方法可以实现与数据库的连接,如PDO、MySQLi等,这里我们以PDO为例,简要介绍如何使用PDO进行数据库连接。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置PDO错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
?></pre><p>在成功连接到数据库后,我们可以执行SQL语句来查询、插入、更新或删除数据,以下是一些常用的SQL语句示例:</p><p>1、查询数据:</p><pre class="brush:php;toolbar:false">
<?php
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据表内容
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
$conn = null;
?></pre><p>2、插入数据:</p><pre class="brush:php;toolbar:false">
<?php
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
$conn = null;
?></pre><p>3、更新数据:</p><pre class="brush:php;toolbar:false">
<?php
$sql = "UPDATE users SET email='john.doe@example.com' WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
$conn = null;
?></pre><p>4、删除数据:</p><pre class="brush:php;toolbar:false">
<?php
$sql = "DELETE FROM users WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . $conn->error;
$conn = null;
?></pre><p>5、PHP中的预处理语句(防止SQL注入):</p><pre class="brush:php;toolbar:false">
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name); // 必须绑定参数才能执行!否则会报错!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<script>alert('XSS攻击');//</script>$name); // bindParam只接受字符串或者PDODataType类型,如果传入其他类型,将会抛出异常,所以必须确保传入的值是字符串或者PDODataType类型的,bindValue(':email', htmlspecialchars($email), \PDO::PARAM_STR),这样就可以避免XSS攻击了,bindParam和bindValue都只能被调用一次,如果你需要多次调用它们,请使用循环,bindValue还可以接受一个可选的参数type,用来指定参数的数据类型,默认情况下,它的值是\PDO::PARAM_STR,但是你可以将其设置为\PDO::PARAM_INT、\PDO::PARAM_BOOL、\PDO::PARAM_NULL等,bindValue也可以接受一个额外的参数forceType,用来强制转换参数的数据类型,默认情况下,它的值是false,如果forceType为true,那么即使参数已经是一个指定的数据类型,它也会被强制转换成期望的数据类型,bindValue(':age', intval($age), \PDO::PARAM_STR | \PDO::PARAM_INT),然后在执行语句之前调用execute()方法,最后关闭连接:$pdo = null; // 或者你可以使用closeCursor()方法来自动关闭游标和连接。</pre>
还没有评论,来说两句吧...