> 백엔드 개발 > PHP 문제 > PHP 수정 SQL

PHP 수정 SQL

王林
풀어 주다: 2023-05-28 15:09:38
원래의
510명이 탐색했습니다.

PHP(Hypertext Preprocessor)는 웹 애플리케이션 개발을 위해 널리 사용되는 오픈 소스 스크립팅 언어입니다. PHP 개발에서 데이터베이스는 매우 중요한 구성 요소이며 SQL 데이터를 수정하는 것은 매우 일반적인 작업입니다. 이 기사에서는 PHP에서 SQL을 수정하는 방법을 소개합니다.

SQL이란 무엇인가요?

SQL(Structured Query Language)은 관계형 데이터베이스(RDBMS)를 관리하기 위한 표준 언어입니다. SQL은 데이터베이스의 데이터를 삽입, 업데이트, 삭제 및 쿼리하는 데 사용되며 관계형 데이터베이스의 테이블, 행 및 열을 관리할 수 있습니다. MySQL, Oracle, MS SQL Server 및 PostgreSQL과 같은 데이터베이스 소프트웨어는 모두 SQL 언어를 지원합니다.

데이터베이스에 어떻게 연결하나요?

PHP는 내장된 MySQLi 및 PDO 확장을 제공하며, 데이터베이스에 연결하려면 이러한 확장 중 하나를 사용해야 합니다.

  • MySQLi 확장 사용:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 연결 만들기
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 연결 성공 여부 확인
if (!$conn) {

die("Connection failed: " . mysqli_connect_error());
로그인 후 복사

}
echo "성공적으로 연결되었습니다";

  • PDO 확장 사용 :

$dsn = "mysql:host=localhost;dbname=myDB";
$username = "username";
$password = "password";
// 연결 만들기
try {

$conn = new PDO($dsn, $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
로그인 후 복사

} catch(PDOException $e ) {

echo "Connection failed: " . $e->getMessage();
로그인 후 복사

}

SQL 데이터를 수정하는 방법은 무엇인가요?

PHP에서 SQL 문을 사용하여 데이터를 수정하려면 mysqli_query 또는 PDO::exec 메서드를 사용해야 합니다. 다음은 몇 가지 일반적인 예입니다.

  • mysqli_query:

$sql = "myTable SET 업데이트 컬럼1 = '값1', 컬럼2 = '값2' WHERE id = 123";

if (mysqli_query($conn, $sql)) {

echo "Record updated successfully";
로그인 후 복사
로그인 후 복사
로그인 후 복사

} else {

echo "Error updating record: " . mysqli_error($conn);
로그인 후 복사

}

  • PDO::exec:

$sql = "UPDATE myTable SET 컬럼1 = 'value1', 컬럼2 = 'value2' WHERE id = 123";

try {

$conn->exec($sql);
echo "Record updated successfully";
로그인 후 복사

} catch (PDOException $e) {

echo "Error updating record: " . $e->getMessage();
로그인 후 복사

}

데이터 수정 시 매우 주의해야 한다는 점에 유의해야 합니다. 특히 프로덕션 환경에서는 SQL 문이 올바르게 실행되고 데이터가 손상되지 않는지 확인해야 합니다.

SQL의 보안을 보장하는 방법은 무엇입니까?

SQL문의 보안을 보장하려면 SQL 주입 공격을 방지해야 합니다. SQL 삽입 공격은 가장 일반적인 네트워크 공격 중 하나입니다. 공격자는 데이터베이스 드라이버의 취약점을 이용하여 데이터베이스에 SQL 문을 삽입합니다. 공격자는 악성 코드를 삽입하여 민감한 데이터를 수정, 삭제 또는 유출할 수 있습니다.

SQL 주입을 피하는 가장 좋은 방법은 준비된 문을 사용하는 것입니다. 전처리 방식을 사용하면 SQL문을 쿼리처럼 파싱하지만 실행하지는 않는다. 쿼리 매개변수가 데이터베이스 서버로 전송됩니다. 그런 다음 쿼리는 매개변수 일치를 시도하고 일치하는 결과만 반환합니다. 준비된 문을 사용하면 SQL 주입 공격을 효과적으로 예방할 수 있습니다.

  • mysqli_prepare:

$sql = "myTable SET 업데이트 컬럼1 = ?, 컬럼2 = ? WHERE id = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss s " , $value1, $value2, $id);

$value1 = "value1";
$value2 = "value2";
$id = 123;

if (mysqli_stmt_execute($stmt)) {

echo "Record updated successfully";
로그인 후 복사
로그인 후 복사
로그인 후 복사

} else {

echo "Error updating record: " . mysqli_stmt_error($stmt);
로그인 후 복사

}

  • PDO 전처리:

$sql = "UPDATE myTable SET 컬럼1 = :value1, 컬럼2 = :value2 WHERE id = :id";
$stmt = $conn->prepare($ sql);

$stmt->bindValue(':value1', $value1);
$stmt->bindValue(':value2', $value2);
$stmt->bindValue(':id' , $id);

$value1 = "값1";
$value2 = "값2";
$id = 123;

if ($stmt->execute()) {

echo "Record updated successfully";
로그인 후 복사
로그인 후 복사
로그인 후 복사

} else {

echo "Error updating record: " . $stmt->errorInfo();
로그인 후 복사

}

준비된 문은 입력에서 특수 문자를 필터링하므로 SQL 문을 직접 실행하는 것보다 안전합니다. 준비된 문을 사용하지 않는 경우 SQL 주입 공격의 위험을 줄이기 위해 htmlspecialchars, addlashes 또는 mysql_real_escape_string 등과 같은 다른 방법을 사용해야 합니다.

요약

이 글에서는 주로 PHP에서 SQL을 수정하는 방법과 SQL의 보안을 확보하는 방법을 소개합니다. SQL 주입 공격은 가장 일반적인 사이버 공격 중 하나이지만 준비된 문을 사용하면 이를 효과적으로 방지할 수 있습니다. PHP는 관계형 데이터베이스 관리를 용이하게 하기 위해 다양한 내장 확장 기능을 제공합니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 PHP 수정 SQL의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿