>백엔드 개발 >PHP 문제 >PHP는 pdo를 사용하여 추가하고 삭제합니다.

PHP는 pdo를 사용하여 추가하고 삭제합니다.

王林
王林원래의
2023-05-28 21:30:38728검색

수정 작업에 대한 자세한 설명

PHP는 인터넷 분야에서 매우 널리 사용되는 스크립트 언어이며, PHP에서는 데이터 저장, 쿼리, 업데이트와 같은 작업을 완료하기 위해 데이터베이스와 상호 작용해야 하는 경우가 많습니다. 데이터 작업의 경우 현재 가장 일반적으로 사용되는 방법에는 mysqli 및 PDO가 있습니다. 이 기사에서는 PDO(PHP Data Objects)의 사용법과 PDO를 사용하여 데이터를 추가, 삭제, 수정 및 쿼리하는 방법을 중점적으로 설명합니다.

  1. PDO의 기본 개념

PDO는 PHP 5.1에 도입된 가볍고 일관된 객체 지향 데이터 액세스 계층 처리 방법으로, 다양한 관계형 데이터베이스에 액세스하기 위한 통합 API를 제공합니다. PDO를 사용하여 데이터베이스에 연결하면 특정 데이터베이스 드라이버 개체를 제공할 수 있으며 다양한 유형의 데이터베이스와 최대한 호환될 수 있습니다. 데이터베이스를 변경해야 하는 경우 다른 데이터베이스 운영 인터페이스를 수정하지 않고 데이터베이스 드라이버만 변경하면 됩니다.

데이터베이스 작업에 PDO를 사용하기 전에 먼저 데이터베이스 연결 작업을 수행해야 합니다. PDO는 데이터베이스에 연결하는 더 간단한 방법을 제공합니다.

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

위 코드를 사용하면 다음과 연결된 $dbh 개체라는 PDO를 만들 수 있습니다. test라는 이름의 MySQL 데이터베이스. $user와 $pass는 데이터베이스의 사용자 이름과 비밀번호이고, mysql:host=localhost;는 데이터베이스에 연결되는 호스트 주소를 나타냅니다.

  1. 데이터 쿼리 작업에 PDO 사용

데이터 쿼리 작업에 PDO를 사용하는 경우 먼저 PDO 개체를 통해 쿼리 문을 만들고 그 결과를 변수에 저장해야 합니다. PDO는 미리 컴파일된 쿼리 문을 지원하므로 쿼리 효율성을 크게 향상시키고 SQL 삽입 공격을 방지할 수 있습니다.

2.1 쿼리 작업

PDO에서는 먼저 SQL 쿼리 문을 준비하고 실행해야 합니다.

$sql = "SELECT * FROM users WHERE username=:username";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();

위 코드에서는 사용자 이름 매개 변수를 바인딩하여 $username 변수의 값을 쿼리 문에 바인딩합니다. , 따라서 SQL 주입 취약점을 피할 수 있습니다.

2.2 쿼리 결과 얻기

쿼리 문을 성공적으로 실행한 후에는 실행 결과를 얻어야 합니다. PDO는 쿼리 결과를 얻기 위해 다음과 같은 방법을 제공합니다.

  • fetch(): 쿼리 결과를 행 단위로 가져옵니다. 매번 한 번에 한 행의 데이터를 반환합니다.
  • fetchAll(): 전체 결과 집합을 가져오고 모든 결과 행을 포함하는 2차원 배열을 반환합니다.
  • fetchColumn(): 결과에서 지정된 열의 값을 가져옵니다. set;
  • rowCount(): 쿼리 결과의 총 행 수를 반환합니다.

다음은 쿼리 결과를 얻기 위한 샘플 코드입니다.

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "username: " . $row['username'] . "
";
    echo "email: " . $row['email'] . "
";
}

위 샘플 코드에서는 while 루프를 통해 쿼리 결과 세트를 순회하고, 매번 한 행의 데이터를 반환하고, 각각에 사용자 이름과 사용자 이름을 출력합니다. echo 문을 통한 데이터 행 email 열에 해당하는 값입니다.

2.3 매개변수 바인딩

PDO를 사용하여 미리 컴파일된 쿼리를 수행하는 경우 SQL 삽입 취약점을 방지하기 위해 쿼리 문의 동적 매개변수를 변수에 바인딩해야 합니다. PDO는 매개변수 바인딩을 위해 다음 방법을 지원합니다:

  • bindParam(): 준비된 문의 매개변수에 변수를 바인딩합니다.
  • bindValue(): 준비된 문의 매개변수에 값을 바인딩합니다.
  • execute(): PDOStatement 객체를 실행합니다.

다음은 binParam() 메서드를 사용하는 매개변수 바인딩을 위한 샘플 코드입니다.

$stmt = $dbh->prepare("SELECT * FROM users WHERE username=:username AND email=:email");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();

위 샘플 코드에서는 binParam() 메서드를 사용하여 두 변수 $username 및 $email을 해당 변수에 바인딩합니다. 쿼리문 매개변수를 입력하고, Execute() 메서드를 통해 쿼리 작업을 실행합니다. 이러한 방식으로 쿼리 시 SQL 주입 취약점을 피할 수 있습니다.

  1. PDO를 사용해 데이터 추가, 삭제, 수정

PDO를 사용해 데이터를 추가, 삭제, 수정하는 경우 PDO 객체를 통해 해당 연산문을 생성하고 그 결과를 변수 중간에 저장해야 합니다. PDO 개체를 통해 명령문을 실행할 때 PDO는 자동으로 입력 데이터를 이스케이프하고 실행 전에 사전 컴파일하여 SQL 주입 취약점을 방지합니다.

3.1 데이터 추가 작업

PDO에서는 prepare() 메서드를 통해 전처리된 SQL 문을 생성하고, Execution() 메서드를 사용하여 해당 문에 매개변수를 전달합니다. 다음은 PDO를 사용하여 데이터를 추가하는 샘플 코드입니다.

// 准备SQL语句并绑定参数
$sql = "INSERT INTO `users` (`username`, `email`) VALUES (?, ?)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $email);

// 执行SQL语句,插入新的用户记录
$username = 'test_user';
$email = 'test_user@example.com';
$stmt->execute();

위 코드에서는 먼저 prepare() 메소드를 통해 전처리된 SQL 문을 생성하고, binParam() 메소드를 사용하여 $username 및 $email 변수를 바인딩합니다. 이 문에서 VALUES(?, ?)의 두 개의 ?에 해당하는 두 개의 물음표 자리 표시자로 설정합니다. . 마지막으로, Execute() 메소드를 통해 SQL 문을 실행하여 데이터 추가 작업을 완료합니다. VALUES (?, ?)中的两个?。最后通过execute()方法执行SQL语句,从而完成一条数据添加操作。

3.2 数据删除操作

在使用PDO进行数据删除时,我们需要通过prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法将需要删除的数据绑定到该语句中。下面是使用PDO进行数据删除的示例代码:

// 准备SQL语句并绑定参数
$sql = "DELETE FROM `users` WHERE `username` = ?";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $username);

// 执行SQL语句,删除指定用户名的用户记录
$username = 'test_user';
$stmt->execute();

在上述示例代码中,我们首先通过prepare()方法创建了一个预处理的SQL语句,使其能够进行数据删除操作,并通过bindParam()方法将变量$username绑定到语句中的问号占位符上,对应于WHERE username = ?

3.2 데이터 삭제 작업

PDO를 사용하여 데이터를 삭제하는 경우 prepare() 메서드를 통해 전처리된 SQL 문을 생성하고, 삭제해야 하는 데이터를 해당 문에 바인딩하기 위해 binParam() 메서드를 사용해야 합니다. 다음은 데이터 삭제를 위해 PDO를 사용하는 샘플 코드입니다. 🎜
// 准备SQL语句并绑定参数
$sql = "UPDATE `users` SET `email` = ? WHERE `username` = ?";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $email);
$stmt->bindParam(2, $username);

// 执行SQL语句,更新指定用户名的用户记录
$username = 'test_user';
$email = 'new_test_user@example.com';
$stmt->execute();
🎜위 샘플 코드에서는 먼저 데이터 삭제 작업을 수행할 수 있도록 prepare() 메서드를 통해 전처리된 SQL 문을 생성하고,bindParam()을 전달했습니다. 메서드 $username 변수를 WHERE username = ?의 ? 중 하나에 해당하는 문의 물음표 자리 표시자에 바인딩합니다. . 마지막으로,execute() 메소드를 통해 SQL 문이 실행되고 데이터 삭제 작업이 완료된다. 🎜🎜3.3 데이터 수정 작업🎜

使用PDO进行数据修改时,我们需要通过prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法将需要修改的数据绑定到该语句中。下面是使用PDO进行数据修改的示例代码:

// 准备SQL语句并绑定参数
$sql = "UPDATE `users` SET `email` = ? WHERE `username` = ?";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $email);
$stmt->bindParam(2, $username);

// 执行SQL语句,更新指定用户名的用户记录
$username = 'test_user';
$email = 'new_test_user@example.com';
$stmt->execute();

在上述示例代码中,我们使用prepare()方法创建了一个预处理的SQL语句,并使用bindParam()方法将需要修改的参数绑定到该语句中。其中,使用了SET语句将用户记录中的email字段进行修改,并使用了WHERE语句将修改操作限制在了指定的用户上。在bindParam()方法中,我们通过1和2两个参数分别对应了email和username,从而完成了参数绑定的操作。

  1. 总结

通过本文的学习,我们了解了如何使用PDO进行MySQL数据库的连接、查询、数据添加、删除和修改等操作。在使用PDO进行操作时,我们需要使用prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法对该语句中的动态参数进行绑定。这样,在使用execute()方法执行语句时,我们就可以避免SQL注入漏洞的发生,使数据操作更加安全可靠。

위 내용은 PHP는 pdo를 사용하여 추가하고 삭제합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.