>  기사  >  백엔드 개발  >  PHP 언어 개발에서 데이터베이스 쿼리에 mysql_query를 사용하는 방법은 무엇입니까?

PHP 언어 개발에서 데이터베이스 쿼리에 mysql_query를 사용하는 방법은 무엇입니까?

王林
王林원래의
2023-06-11 08:44:261997검색

PHP 언어 개발에서는 MySQL 데이터베이스를 사용하는 것이 매우 일반적이며 mysql_query 함수는 PHP가 MySQL 데이터베이스에 연결하는 방법이자 데이터 쿼리의 기본 방법 중 하나이기도 합니다. 이 기사에서는 데이터베이스 쿼리에 mysql_query 함수를 사용하는 방법을 살펴보겠습니다.

1. mysql_query 함수 이해

mysql_query는 MySQL 서버에 쿼리를 보내는 데 사용되는 함수입니다. 일반적으로 INSERT, UPDATE, DELETE 및 SELECT 쿼리 문과 같은 수정 작업을 수행하는 데 사용됩니다.

기본 구문 구조는 다음과 같습니다.

mysql_query(string $query , resource $connection = ?): mixed

그 중 "$query"는 실행될 쿼리 문으로 유효한 SQL 문이어야 하며, "$connection"은 MySQL 데이터베이스에 연결하기 위한 식별자, 기본값은 가장 최근에 열린 연결입니다.

실행이 성공하면 MySQL 리소스 식별자가 반환됩니다. 그렇지 않으면 false가 반환됩니다. 이는 쿼리 실행이 실패함을 의미합니다.

2. mysql_query를 사용하여 쿼리

mysql_query를 사용하여 쿼리하기 전에 먼저 데이터베이스에 연결해야 합니다. mysqli_connect 또는 PDO를 사용하여 데이터베이스에 연결할 수 있습니다.

MySQL 데이터베이스에 연결하기 위한 샘플 코드는 다음과 같습니다.

// 服务器地址
$db_host = "localhost";
// 数据库用户名
$db_user = "root";
// 数据库密码
$db_password = "123456";
// 数据库名
$db_name = "mydatabase";

// 连接数据库
$link = mysql_connect($db_host, $db_user, $db_password) or die("连接失败!");

// 选择数据库
mysql_select_db($db_name, $link);

다음으로 mysql_query 함수를 사용하여 쿼리할 수 있습니다. 예를 들어, 학생 테이블의 모든 학생 정보를 쿼리합니다.

// 查询所有学生信息
$sql = "SELECT * FROM student";
$result = mysql_query($sql);

// 遍历结果集并输出每个学生的信息
while ($row = mysql_fetch_assoc($result)) { 
    echo '学生ID:'.$row['id'].',姓名:'.$row['name'].',年龄:'.$row['age'].'<br>'; 
}

위 코드에서 "$sql"은 실행할 쿼리 문입니다. 이 예에서는 "student" 테이블의 모든 레코드를 쿼리합니다. $result"는 실행입니다. 쿼리에서 반환된 결과 집합입니다. 동시에 이 결과 세트는 mysql_fetch_assoc 함수를 통해 탐색될 수 있습니다. mysql_fetch_assoc 함수는 현재 결과 행을 연관 배열로 반환하고 다음 행에 대한 포인터를 가리킵니다. 따라서 모든 결과 집합은 while 루프를 통해 탐색될 수 있습니다.

3. SQL 주입을 피하세요

데이터 쿼리에 mysql_query 함수를 사용할 때 SQL 주입 문제가 발생하지 않도록 주의가 필요합니다. SQL 인젝션(SQL 인젝션)이란 해커가 프로그램 내 SQL 문을 이용해 불법적인 SQL 문을 실행하거나 특정 특수 명령이나 문자를 입력해 민감한 데이터를 탈취하는 공격 방식을 말한다. 애플리케이션의 보안을 보장하려면 SQL 쿼리를 수행할 때 입력 매개변수를 전처리해야 합니다.

다음은 SQL 삽입을 방지하는 주요 방법입니다.

1. PHP addlashes 함수 사용

addlashes 함수의 기능은 작은따옴표('), 큰따옴표(") 및 백슬래시()를 제거하는 것입니다. string SQL 주입 공격을 피하기 위해 특수 문자를 이스케이프하세요.

사용 예:

// 防SQL注入处理函数
function filter($text) {
    if(!get_magic_quotes_gpc()) {
        $text = addslashes($text);    // 对单引号、双引号、反斜杠等进行转义处理
    }
    return $text;
}

// 读取提交的用户名和密码信息
$username = filter($_POST['username']);
$password = filter($_POST['password']);

// 查询用户信息
$sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";
$result = mysql_query($sql);

2. PHP mysqli 확장 기능 사용

mysqli는 MySQL에서 제공하는 API 인터페이스 기능을 제공하고 전처리 방법을 지원하는 PHP 확장 라이브러리의 모듈입니다.

mysqli를 사용하여 쿼리하는 샘플 코드는 다음과 같습니다.

// 预处理查询
$stmt = mysqli_prepare($link, "SELECT * FROM user WHERE username=? AND password=?");
mysqli_stmt_bind_param($stmt, "ss", $username, $password);
mysqli_stmt_execute($stmt);

// 处理结果集
$result = mysqli_stmt_get_result($stmt);

// 遍历结果集并输出每行信息
while ($row = mysqli_fetch_assoc($result)) { 
    echo "用户名:".$row['username'].",密码:".$row['password']."<br>"; 
}

// 关闭会话句柄
mysqli_stmt_close($stmt);

3. PHP PDO 확장 기능 사용

PDO는 다양한 데이터베이스를 지원하고 제공하는 확장 기능입니다.

PDO를 사용하여 쿼리하는 샘플 코드는 다음과 같습니다.

// 连接数据库
$db_host = "localhost";
$db_name = "mydatabase";
$db_user = "root";
$db_password = "123456";
$dsn = "mysql:host={$db_host};dbname={$db_name}";
$conn = new PDO($dsn, $db_user, $db_password);

// 预处理查询
$stmt = $conn->prepare("SELECT * FROM user WHERE username=:username AND password=:password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

// 处理结果集
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 遍历结果集并输出每行信息
foreach ($result as $row) {
    echo "用户名:".$row['username'].",密码:".$row['password']."<br>"; 
}

// 关闭连接
$conn = null;

4. 요약

이 문서에서는 데이터베이스 쿼리 메서드에 대한 mysql_query 함수의 사용을 소개합니다. 또한 초보자의 경우 위의 방법을 통해 학습하고 연습할 수 있으며, 이미 이 지식을 습득한 개발자의 경우 다른 고급 PHP 및 MySQL 사용 기술도 배울 수 있습니다. 프로그램 보안과 데이터 정확성은 개발자가 항상 고려해야 하는 중요한 문제 중 하나입니다.

위 내용은 PHP 언어 개발에서 데이터베이스 쿼리에 mysql_query를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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