PHPでSQLを修正する

May 28, 2023 pm 03:09 PM

PHP (ハイパーテキスト プリプロセッサ) は、Web アプリケーションの開発に広く使用されているオープン ソース スクリプト言語です。 PHP 開発では、データベースは非常に重要なコンポーネントであり、SQL データの変更は非常に一般的な操作です。この記事では、PHPでSQLを変更する方法を紹介します。

SQL とは何ですか?

SQL (構造化照会言語) は、リレーショナル データベース (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);
// 接続が確立されているかどうかを確認しますsuccess
if (!$conn) {

die("Connection failed: " . mysqli_connect_error());
ログイン後にコピー

}
echo "接続に成功しました";

  • PDO 拡張機能を使用します:

$dsn = "mysql:host=localhost;dbname=myDB";
$username = "ユーザー名";
$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 = "UPDATE myTable SET column1 = 'value1'、column2 = 'value2' 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 column1 = 'value1'、column2 = '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 インジェクション攻撃は、最も一般的なネットワーク攻撃の 1 つであり、攻撃者はデータベース ドライバーの脆弱性を悪用して、データベースに SQL ステートメントを挿入します。攻撃者は、悪意のあるコードを挿入することにより、機密データを変更、削除、または漏洩する可能性があります。

SQL インジェクションを回避する最善の方法は、プリペアド ステートメントを使用することです。前処理メソッドを使用する場合、SQL ステートメントはクエリと同様に解析されますが、実行されません。クエリパラメータはデータベースサーバーに送信されます。次に、クエリはパラメータの一致を試み、一致する結果のみを返します。プリペアド ステートメントを使用すると、SQL インジェクション攻撃を効果的に防ぐことができます。

  • mysqli_prepare:

$sql = "UPDATE myTable SET column1 = ?, column2 = ? WHERE id = ?";
$stmt = mysqli_prepare($conn , $sql);
mysqli_stmt_bind_param($stmt, "sss", $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 column1 = :value1, column2 = :value2 WHERE id = :id";
$stmt = $conn->prepare($ sql );

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

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

if ($stmt->execute()) {

echo "Record updated successfully";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

} else {

echo "Error updating record: " . $stmt->errorInfo();
ログイン後にコピー

}

準備されたステートメントは特殊文字をフィルターするため、SQL ステートメントを直接実行するよりも安全です。入力が削除されます。プリペアド ステートメントを使用していない場合は、htmlspecialchars、addslashes、mysql_real_escape_string などの SQL インジェクション攻撃のリスクを軽減するための他の方法を使用する必要があります。

概要

この記事では主にPHPでSQLを変更する方法とSQLのセキュリティを確保する方法を紹介します。 SQL インジェクション攻撃は最も一般的なサイバー攻撃の 1 つですが、プリペアド ステートメントを使用することで効果的に回避できます。 PHP には、リレーショナル データベースの管理を容易にするための組み込み拡張機能が多数用意されています。この記事がお役に立てば幸いです。

以上がPHPでSQLを修正するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)