ホームページ  >  記事  >  バックエンド開発  >  PHPでSQLを修正する

PHPでSQLを修正する

王林
王林オリジナル
2023-05-28 15:09:38495ブラウズ

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 までご連絡ください。