1. セミコロンの例外
MySQL では、コマンドの各行はセミコロン (;) で終わりますが、MySQL コマンドの行を PHP コードに挿入する場合は、次のセミコロンを省略することをお勧めします。 例:
mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ($first_name, $last_name)");
これは、PHP がセミコロンで行を終了し、余分なセミコロンが発生する場合があるためです。これにより、PHP の構文アナライザーが誤った分析を実行することになります。したがって省略した方が良いでしょう。この場合、セミコロンは省略されていますが、MySQL コマンドの実行時に PHP が自動的に追加します。
セミコロンを追加する必要がない別の状況もあります。通常のように水平ではなく垂直に並べてフィールドを表示したい場合は、G を使用して SQL ステートメントの行を終了できます。この場合、セミコロンは必要ありません。例:
SELECT * FROM PENPALS WHERE。 USER_ID = 1G
2. TEXT、DATE、SET のデータ型
TEXT はデータ型ではありません。「LONG VARCHAR」または「MEDIUMTEXT」である必要があります。
DATE データ型の形式は YYYY-MM-DD です (例: 2001-10-01)。 date 関数を使用すると、現在のシステム時刻を次の形式で簡単に取得できます:
date("Y-m-d")
また、DATA データ型間で減算して、時間の差を日数で取得できます:
$age = ($ current_date - $birthdate);
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 = Bill
AND LAST_NAME = Gates
) AND CITY LIKE $CITY
");
最初の行で、ユーザーが CITY 値を指定しない場合、ワイルドカード文字 % が CITY 変数の置換に使用され、CITY 値が実行中に考慮されます。 CITY フィールドが空のレコードも含めて検索します。
しかし、CITYフィールドの値がNULLであるレコードがいくつかある場合、問題が発生します。上記のクエリではこれらのフィールドが見つかりません。この問題の解決策は次のようになります: if (!$CITY) {$CITY = "%";}
$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = Bill
AND LAST_NAME = Gates
AND (CITY LIKE $CITY OR CITY IS NULL)
");
NULL を検索する場合は、「IS」キーワードを使用する必要があり、LIKE が正しく機能しないことに注意してください。
最後に言及することは、新しいフィールドを追加または変更する前にデータベースにすでにいくつかのレコードがある場合、元のレコードに新しく追加されたフィールドの値が NULL または空である可能性があるということです。この場合は、を使用します。 SELECT クエリには特別な注意が必要です。
http://www.bkjia.com/PHPjc/532398.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/532398.html技術記事 1. セミコロンの例外 MySQL では、コマンドの各行はセミコロン (;) で終わりますが、MySQL コマンドの行を PHP コードに挿入する場合は、次のセミコロンを省略することをお勧めします。