ホームページ データベース mysql チュートリアル PHP で MySQL を操作するときに注意する必要がある問題

PHP で MySQL を操作するときに注意する必要がある問題

Dec 13, 2016 pm 05:25 PM

MySQL について最初に覚えておかなければならないことは、コマンドの各行はセミコロン (;) で終わるということですが、絶対に確実なことは何もなく、MySQL 行が PHP に挿入されるときも同じです。コードでは、次のセミコロンを省略することをお勧めします。たとえば、

mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', $last_name')");

これは、PHP も A を使用するためです。セミコロンは行を終了します。余分なセミコロンは PHP パーサーを混乱させる場合があるため、省略することをお勧めします。この場合、セミコロンは省略されていますが、MySQL コマンドの実行時に PHP が自動的に追加します。

セミコロンを追加する必要がない別の状況もあります。通常の水平配置ではなく、垂直配置でフィールドを表示したい場合は、G を使用して SQL ステートメントの行を終了できます。この場合、セミコロンは必要ありません。例:

SELECT。 * FROM PENPALS WHERE USER_ID = 1G

2. TEXT、DATE、SET のデータ型

MySQL データテーブルのフィールドにはデータ型が定義されている必要があります。約 25 のオプションがありますが、そのほとんどは簡単で、これ以上の説明は必要ありません。しかし、言及しなければならないことがいくつかあります。

書籍によってはそう書いてあるかもしれませんが、TEXTはデータ型ではありません。実際には「LONG VARCHAR」または「MEDIUMTEXT」である必要があります。

DATE データ型の形式は YYYY-MM-DD です (例: 1999-12-08)。 date 関数を使用すると、現在のシステム時刻を date("Y-m-d") の形式で簡単に取得できます:

また、DATA データ型間で減算して、時間の差を日数で取得できます:

$age = ( $ current_date - $birthdate);

Set SET は便利なデータ型です。SET は複数の値を保存できるのに対し、ENUM は 1 つの値しか保存できない点が異なります。さらに、SET タイプは最大 64 個の事前定義値のみを持つことができますが、ENUM タイプは最大 65,535 個の事前定義値を処理できます。 64 を超える値を含むコレクションが必要な場合はどうすればよいでしょうか?現時点では、この問題を一緒に解決するには、複数のコレクションを定義する必要があります。

3. ワイルドカード

SQLには「*」と「%」の2種類のワイルドカード文字があります。さまざまな状況で使用されます。例: データベースのすべての内容を表示したい場合は、次のようにクエリできます:

SELECT * FROM dbname WHERE USER_ID LIKE '%';

ここでは、両方のワイルドカードが使用されています。これらは同じことを意味し、どちらも任意の文字列に一致しますが、異なるコンテキストで使用されます。 「 * 」はフィールド名と一致するために使用され、「 % 」はフィールド値と一致するために使用されます。もう 1 つ気付きにくいのは、ワイルドカード文字「%」を LIKE キーワードと一緒に使用する必要があることです。

アンダースコア「_」というワイルドカード文字もあります。これは上記とは異なる意味を持ち、任意の 1 文字と一致するために使用されます。

4. NOT NULL で空のレコード

ユーザーが何も入力せずに送信ボタンを押した場合はどうなりますか?本当に値が必要な場合は、前述したように、データ検証にクライアント側スクリプトまたはサーバー側スクリプトを使用できます。ただし、データベースでは、一部のフィールドは空白のままにすることも、何も入力することもできません。このようなレコードの場合、MySQL は値 NULL を挿入します。これがデフォルトの操作です。
フィールド定義で NOT NULL を宣言した場合 (このフィールドを作成または変更するとき)、MySQL はこのフィールドを空のままにし、何も入力しません。 ENUM 列挙型のフィールドの場合、NOT NULL を宣言すると、MySQL は列挙セットの最初の値をフィールドに挿入します。つまり、MySQL は、列挙セットの最初の値をこの列挙型のデフォルト値として使用します。

値が NULL のレコードと空のレコードにはいくつかの違いがあります。 % ワイルドカード文字は空のレコードと一致しますが、NULL レコードと一致することはできません。ある時点で、この区別が予期せぬ結果をもたらす可能性があります。私の経験によると、どのフィールドも NOT NULL と宣言する必要があります。このようにして、次の SELECT クエリ ステートメントは正常に実行できます:

if (!$CITY) {$CITY = "%";}

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' Liu'
AND LAST_NAME = 'Rufeng'
AND CITY LIKE '$CITY'
");

最初の行で、ユーザーが CITY 値を指定しない場合、ワイルドカード文字 % が CITY 変数の代わりに使用されます。検索では、CITY フィールドが空のレコードも含め、あらゆる CITY 値が考慮されます。

しかし、CITYフィールドの値がNULLであるレコードがいくつかある場合、問題が発生します。上記のクエリではこれらのフィールドが見つかりません。この問題の解決策は次のようになります。

if (!$CITY) { $CITY = "%"; }

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' Liu'
AND LAST_NAME = ' Rufeng'
および ('$CITY' のような都市、または CITY が NULL です)
");

NULLを検索する場合は「IS」キーワードを使用する必要があり、LIKEが正しく機能しないことに注意してください。

最後に言及することは、新しいフィールドを追加または変更する前にデータベースに既にいくつかのレコードがある場合、元のレコードに新しく追加されたフィールドの値は NULL になるか空になる可能性があるということです。これはMySQLのバグとも考えられますので、この場合、SELECTクエリを使用する場合は特に注意してください


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

MySQL:データベース、phpmyAdmin:管理インターフェイス MySQL:データベース、phpmyAdmin:管理インターフェイス Apr 29, 2025 am 12:44 AM

MySQLとPHPMyAdminは、次の手順を通じて効果的に管理できます。1。データベースの作成と削除:PHPMyAdminをクリックして完了します。 2。テーブルの管理:テーブルを作成し、構造を変更し、インデックスを追加できます。 3。データ操作:データの挿入、更新、削除、SQLクエリの実行をサポートします。 4。データのインポートとエクスポート:SQL、CSV、XML、およびその他の形式をサポートします。 5。最適化と監視:最適化可能なコマンドを使用してテーブルを最適化し、クエリアナライザーと監視ツールを使用してパフォーマンスの問題を解決します。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

フィールドをMySQLテーブルに追加および削除する手順 フィールドをMySQLテーブルに追加および削除する手順 Apr 29, 2025 pm 04:15 PM

MySQLでは、AlterTabletable_nameaddcolumnnew_columnvarchar(255)afterexisting_columnを使用してフィールドを追加し、andtabletable_namedopcolumncolumn_to_dropを使用してフィールドを削除します。フィールドを追加するときは、クエリのパフォーマンスとデータ構造を最適化する場所を指定する必要があります。フィールドを削除する前に、操作が不可逆的であることを確認する必要があります。オンラインDDL、バックアップデータ、テスト環境、および低負荷期間を使用したテーブル構造の変更は、パフォーマンスの最適化とベストプラクティスです。

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

MySQLをアンインストールし、残留ファイルをクリーンする方法 MySQLをアンインストールし、残留ファイルをクリーンする方法 Apr 29, 2025 pm 04:03 PM

安全かつ徹底的にMySQLをアンインストールし、すべての残留ファイルをクリーンにするには、次の手順に従ってください。1。MySQLサービスを停止します。 2。MySQLパッケージをアンインストールします。 3.構成ファイルとデータディレクトリのクリーン。 4.アンインストールが徹底していることを確認します。

MySQLにデータを挿入する効率的な方法 MySQLにデータを挿入する効率的な方法 Apr 29, 2025 pm 04:18 PM

MySQLでデータを挿入するための効率的な方法には、次のものが含まれます。1。insertInto ...値構文、2。LoadDatainFileコマンドの使用、3。トランザクション処理の使用、4。バッチサイズの調整、5。Insurtignoreまたは挿入の使用...

データ処理と計算にMySQL関数を使用する方法 データ処理と計算にMySQL関数を使用する方法 Apr 29, 2025 pm 04:21 PM

MySQL関数は、データ処理と計算に使用できます。 1.基本的な使用には、文字列処理、日付計算、数学操作が含まれます。 2。高度な使用法には、複数の関数を組み合わせて複雑な操作を実装することが含まれます。 3.パフォーマンスの最適化では、Where句での機能の使用を回避し、GroupByおよび一時テーブルを使用する必要があります。

mysqlの文字セットと照合ルールを構成する方法 mysqlの文字セットと照合ルールを構成する方法 Apr 29, 2025 pm 04:06 PM

MySQLで文字セットと照合を構成する方法は次のとおりです。1。サーバーレベルでの文字セットとコレクションの設定:setNames'utf8 '; setCharacterSetutf8; setCollat​​ion_connection = 'utf8_general_ci'; 2。特定の文字セットと照合を使用するデータベースを作成します:createdatabaseexample_dbcharactersetutf8collat​​eutf8_general_ci; 3.テーブルを作成するときに文字セットとコレクションを指定:createTableExample_table(idint

See all articles