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 중국어 웹사이트의 기타 관련 기사를 참조하세요!