1.PHPデータベース接続と基本操作
MySQL は「クライアント/サーバー」アーキテクチャを使用します。 PHP によってインストールされた MySQL 拡張機能を使用する場合も、クライアント ソフトウェア領域を使用して MySQL データベース サーバーに直接アクセスする場合も、原理は同じです。SQL コマンドを MySQL 管理システムに送信し、結果をユーザーに返す必要があります。
PHP では、SQL は 2 つのカテゴリに分類されます (SQL ステートメントの分類を参照)。1 つは、実行後に結果セット (select/desc テーブル名など) を返す DQL ステートメントで、2 つ目は、実行後に結果セットを処理する必要があります。 DML、DDL などの結果セットを持たない DQL ステートメント。ただし、DML ステートメントが正常に実行されると、データ テーブル内のレコードに影響を与えます。
リーリー2. PHP プロセスはクエリ結果セットを選択します
PHP で select ステートメントを実行すると、各フィールドの処理に使用できる結果セットが返されます
リーリー結果セット内のデータにアクセスする必要がある場合は、次の 4 つの関数のいずれかを使用できます (すべて結果セットのリソース識別子をパラメーターとして受け取り、自動的に次のレコードを返し、テーブルの最後に false を返します) )
1. mysql_fetch_row(): この関数は結果レコードを返し、それを通常のインデックス データとして保存します
2. mysql_fetch_assoc(): 結果セットから行を取得し、関連データとして保存します
3. mysql_fetch_array(): 結果セットから行を連想配列、数値配列、またはその両方として取得します。 MYSQL_ASSOC (連想配列形式)、MYSQL_NUM (インデックス配列形式)、および MYSQL_BOTH を 2 番目のパラメータとして使用して、返されるデータ形式を指定できます。
4. mysql_fetch_object(): 結果セットから行をオブジェクトとして取得し、各フィールドはオブジェクト モードでアクセスされます。
推奨事項: 特別な要件がない限り、mysql_fetch_array() を使用しないでください。同じ関数を高効率で実現するには、mysql_fetch_row() または mysql_fetch_assoc() を使用できます。
結果セットに関連してよく使用される 3 つの関数もあります
5. mysql_data_seek(int $num): 内部結果のポインターを移動します。 $num は、設定する新しい結果セット ポインターの行数です。
6. mysql_fetch_lengths(resource <font face="NSimsun">$result</font>
): 結果セット内の各出力の長さを取得します
7. mysql_result(resource <font face="NSimsun">$result</font>
, int <font face="NSimsun">$row[,mixed $field]</font>
, int <font face="NSimsun">$row[,mixed $field]</font>
): MySQL 結果セット内のユニットの内容を返します。 field パラメーターには、フィールドのオフセットまたはフィールド名、あるいはフィールド テーブル ポイントのフィールド名 (tablename.fieldname) を指定できます。列にエイリアスが与えられている場合 ('select foo as bar from...')、列名の代わりにエイリアスが使用されます。 mysql_result() の呼び出しを、結果セットを処理する他の関数と組み合わせることはできません。
mysql_fetch_array() 関数は、結果セットから行を連想配列、数値配列、またはその両方としてフェッチします。
結果セットから取得した行に基づいて配列を返します。行がない場合は false を返します。
mysql_fetch_array(data,array_type)
パラメータデータ: オプション。仕様では使用するデータポインタを指定します。このデータ ポインタは、mysql_query() 関数の結果です。
パラメータ: array_type オプション。返される結果の種類を指定します。このパラメータのオプションの値: MYSQL_ASSOC - 連想配列
MYSQL_NUM - 数値配列
MYSQL_BOTH - デフォルト。連想配列と数値配列の両方を生成します。
注: mysql_fetch_array() は mysql_fetch_row() の拡張バージョンです。データを数値インデックスとして配列に保存するだけでなく、フィールド名をキーとして使用して、データを連想インデックスとして保存することもできます。
例:
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('接続できませんでした: ' . mysql_error() );
}
$db_selected = mysql_select_db("test_db",$con);
$sql = "SELECT * from Person WHERE Lastname='Adams'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));
mysql_close($con);
?>
出力は次のようになります:
Array
(
[0] => Adams
[LastName] => Adams
[1 ] = > ジョン
[名] => ロンドン
[都市] => ロンドン
)
/////////// /// ///
mysql_fetch_assoc() 関数は、結果セットから行を連想配列としてフェッチします。
結果セットから取得した行に基づいて生成された連想配列を返します。行がない場合は false を返します。
mysql_fetch_assoc(data)
パラメータ: data (必須) 使用されるデータ ポインタ。データ ポインタは、mysql_query() から返された結果です。
注: mysql_fetch_assoc() は、mysql_fetch_array() に 2 番目のオプションのパラメータ MYSQL_ASSOC を加えたものを使用することとまったく同じです。連想配列を返すだけです。これは、mysql_fetch_array() の最初の動作方法でもあります。
ヒント: リレーショナル インデックスに加えて数値インデックスが必要な場合は、mysql_fetch_array() を使用します。
注: この関数によって返されるフィールド名は大文字と小文字が区別されます。
例は次のとおりです:
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('接続できませんでした: ' . mysq ......残りのテキスト>>
1. 注意: 未定義の変数: C:\xampp\htdocs\shop\files\mysql.php の db 5
警告: 未定義の変数 db (5 行目のコードのどの行にあるのかわかりません)。
既知のコードの観点から見ると、このエラー メッセージの理由は、関数本体の外で定義された変数 (db) をコードの観点からは実際には気付かなかったことが原因であるはずです。変数スコープ (グローバル、ローカル) のアプリケーションの問題が正しくありません。
簡単に言えば、関数 select_mycx で db が見つかりません。
解決策:
(1) パラメータを指定して渡します。
function select_mycx($table,$by,$select_str,$number,$db)
{
.....
}
(2) パラメータ本体でグローバル変数参照を定義します:
function select_mycx( $table,$by,$select_str,$number)
{
global $db;
....
}
2.致命的なエラー: C の非オブジェクトに対するメンバー関数 query() の呼び出し: \xampp\htdocs\shop\files\mysql.php の 5 行目
このエラーは実際には上記のエラーが原因で、$db が正しく導入されていないため、当然クエリは正しく実行できません。