Apa tujuan dari fungsi array pengambilan mysql. Sintaks dan contoh aplikasi

Apa tujuan dari fungsi array pengambilan mysql.  Sintaks dan contoh aplikasi
Apa tujuan dari fungsi array pengambilan mysql. Sintaks dan contoh aplikasi

Array pengambilan MySQL memproses hasil pengambilan dari database dan mengembalikan array biasa, array asosiatif, atau kedua array sebagai hasilnya. Faktanya, pengambilan MySQL adalah terjemahan informasi yang diperoleh dari query database ke dalam bentuk yang mudah untuk diproses.

Untuk kueri sederhana, sintaksnya menggunakan satu baris sampel untuk diubah menjadi array; untuk kueri streaming, ini adalah alat untuk pemrosesan aliran informasi secara berurutan.

Sintaks dan contoh aplikasi

Input array pengambilan PHP MySQL menerima hasil kueri dan format hasil yang diinginkan dapat ditentukan:

  • MYSQL_ASSOC;
  • MYSQL_NUM;
  • MYSQL_BOTH.

Dalam kasus pertama, array asosiatif akan dibentuk, dalam kasus kedua, array dengan indeks numerik, dan dalam kasus terakhir, array dengan indeks dari kedua jenis akan tersedia.

Akibat eksekusi $aFetch = mysqli_fetch_array($cHasil) sebuah array akan dibuat $aAmbil.

Dalam contoh ini, array pengambilan MySQL memproses data asli (1). Hanya ada empat catatan dalam tabel, untuk masing-masing catatan dilakukan opsi pengambilan yang berbeda. Hasil pengolahan sampel (2) dirangkai menjadi baris data (3): $cFetch, $cFetch1, $cFetch2, $cFetch3.

Hasilnya menunjukkan bahwa tanpa menentukan konstanta MYSQL_ASSOC, MYSQL_NUM dan MYSQL_BOTH, diperoleh hasil yang sama seperti dalam kasus MYSQL_BOTH. Konstanta ini dianggap usang dan penggunaannya tidak lagi digunakan.

Menggunakan array pengambilan MySQL

Menggunakan hasil kueri dalam format array sangat mudah dalam program PHP. Fungsionalitas akses database MySQL menyediakan metode akses yang aman dan andal.

Array pengambilan MySQL menghasilkan kesalahan tingkat peringatan hanya dalam situasi di mana $cResult hilang atau tidak valid, dan oleh karena itu koneksi ke database gagal. Nama $cResult bisa apa saja, digunakan di sini dalam konteks contoh. Dalam permintaan (2):

  • $cHasil = mysqli_query($ini->iConnectId, $cQuery);

variabel $this->iConnectId adalah koneksi database aktif, diformat sebagai objek multifungsi.

Alat array pengambilan MySQL sederhana dan efektif, namun tetap nyaman digunakan dalam cara berorientasi objek.

Objek Akses Basis Data

MySQL adalah alat yang sangat sederhana dan efektif untuk mengatur informasi. Selama masa penggunaannya, database MySQL telah terbukti menjadi sarana yang andal dan efisien untuk menyimpan dan mengakses data.

Mekanisme untuk menulis kueri basis data dan menggunakannya sederhana, namun dalam praktiknya idealnya memformatnya dalam format objek seluruh basis data, tabel terpisah, atau struktur data tertentu.

Desain pengambilan MySQL dalam praktik nyata cukup rumit, terutama ketika diperlukan untuk mengambil informasi dari satu tabel informasi dasar, misalnya tabel kepegawaian, dan kemudian memilih data karyawan dari tabel lain:

  • riwayat pekerjaan;
  • informasi biografi;
  • pencapaian produksi;
  • bidang kompetensi profesional;
  • data yang lain.

Biasanya, data ini tidak akan diisi untuk semua karyawan, dan selain itu, jika Anda memasukkan informasi spesifik ke dalam tabel kepegawaian untuk setiap lini, ini akan membuatnya rumit dan tidak nyaman untuk digunakan.

Tingkat ke Basis Data

Ruang lingkup penerapan MySQL Fetch adalah transformasi data menjadi array. Hal ini dapat dilakukan pada tingkat metode objek database. Dalam hal ini, pengembang membuat sendiri alat tingkat tinggi yang menyediakan akses ke tabel database apa pun dengan cara yang sama.

Panggilan dilakukan ke metode yang segera menghasilkan larik data yang diperlukan, dan operasi pembuatan permintaan, pelaksanaannya, dan pemrosesan hasilnya termasuk dalam isi metode ini.

Ini sangat mudah, dan tidak perlu menulis konstruksi yang rumit, menciptakan preseden untuk kemungkinan kesalahan. Yang sangat penting: pendekatan ini menyederhanakan kemungkinan modifikasi struktur database, karena tidak melampaui objek akses database. Jika perlu, Anda hanya perlu mengulang objek akses database, dan bukan seluruh fungsi situs.

Bahkan lebih mudah untuk menambahkan objek tujuan sebenarnya di atas objek akses database. Misalnya, deskripsi staf yang memiliki properti berikut: daftar, menampilkan data karyawan, mengganti kartu karyawan, dll. Alat akses data disembunyikan di kedalaman metode objek nyata, yang menyederhanakan pekerjaan pengembang dan meningkatkan kualitas hasilnya.

$query = "PILIH col1,col2,col3 DARI tabel WHERE id > 100" $result = _query($query);

untuk tindakan ini:

Sementara ($baris = mysql_fetch_array($hasil))( .... )

apakah ini menghasilkan 1 putaran (ulangi x kali)?

dan untuk ini:

$baris = mysql_fetch_array($hasil) foreach($baris sebagai $r)( ... )

apakah ini menghasilkan 2 loop (ulangi x kali)?

dimana x adalah banyaknya hasil

Sunting:

oke terima kasih teman-teman, oke, pada dasarnya saya mengutarakan pertanyaan ini dengan sangat, sangat buruk.

jika dipikir-pikir, hal itu seharusnya terjadi

"mysql_fetch_array() hanya mengembalikan satu baris setiap kali dipanggil"

Saya sekarang senang karena pemahaman saya tentang mysql_fetch_array() adalah v. Tidak setia!

Terima kasih atas waktu Anda!

Saya mengasumsikan perfroms loop mysql_fetch_array(), jadi saya tertarik menggunakan while() bersamaan dengan itu jika itu menyimpan loop bersarang.

TIDAK. mysql_fetch_array hanya mengembalikan baris hasil berikutnya dan memajukan penunjuk internal. Dia tidak terpaku. (Secara internal, itu mungkin menggunakan semacam loop di suatu tempat atau tidak, tapi itu tidak masalah.)

Sementara ($baris = mysql_fetch_array($hasil)) ( ... )

Ini melakukan hal berikut:

  1. baris ditugaskan $baris
  2. ekspresi dievaluasi, dan jika bernilai true , isi perulangan akan dieksekusi
  3. prosedur dimulai lagi
$baris = mysql_fetch_array($hasil); foreach($baris sebagai $r) ( ... )

Ini melakukan hal berikut:

  1. mysql_fetch_array mengambil dan mengembalikan baris berikutnya
  2. baris ditugaskan $baris
  3. foreach mengulang isi array dan mengeksekusi isi loop sebanyak jumlah elemen dalam array

Dalam kedua kasus mysql_fetch_array melakukan hal yang sama. Anda menulis begitu banyak siklus. Namun kedua desain tersebut tidak melakukan hal yang sama. Yang kedua hanya akan bertindak pada satu baris hasil, sedangkan yang pertama akan mengulangi semua baris.

Mengingat hanya satu baris yang dikembalikan, hanya satu loop yang akan dieksekusi dalam kedua kasus. Meskipun ia akan memeriksa bahwa loop memasuki kondisi dua kali untuk masing-masingnya.

Untuk yang pertama: program Anda akan mengulang satu kali untuk setiap baris dalam kumpulan hasil yang dikembalikan oleh kueri. Anda bisa mengetahui terlebih dahulu berapa banyak hasil yang ada dengan menggunakan mysql_num_rows() .

Untuk yang kedua : kali ini anda hanya menggunakan saja satu baris serangkaian hasil dan Anda melakukan sesuatu untuk masing-masing hasil tersebut kolom. Inilah yang dilakukan oleh konstruksi foreach bahasa tersebut: ia melakukan perulangan melalui badan perulangan untuk setiap entri dalam array $row. Berapa kali program akan melewati perulangan diketahui sebelumnya: program akan melewati satu kali untuk setiap kolom dalam kumpulan hasil (yang mungkin Anda ketahui, tetapi jika Anda perlu mendefinisikannya, Anda dapat menggunakan count($row) ) .

$query = "PILIH col1,col2,col3 DARI tabel WHERE id > 100" $result = mysql_query($query); if(mysql_num_rows($result)>0) ( while($row = mysql_fetch_array()) //di sini Anda dapat menggunakan banyak fungsi seperti mysql_fetch_assoc() dan lainnya ( //Ini mengembalikan 1 baris ke variabel Anda yang menjadi array dan secara otomatis pergi ke string hasil berikutnya Echo $row["col1"]."|".Echo $row["col2"]."|".Echo $row["col2"] ) )

Ya, mysql_fetch_array() hanya mengembalikan satu hasil. Jika Anda ingin mendapatkan lebih dari satu baris, Anda perlu melakukan pemanggilan fungsi dalam loop sementara.

Dua contoh:

Ini hanya akan mengembalikan baris pertama

$baris = mysql_fetch_array($hasil);

Ini akan mengembalikan satu baris setiap loop hingga tidak ada lagi baris di kumpulan hasil

While($row = mysql_fetch_array($result)) ( //Melakukan sesuatu dengan isi $row )

Garis pertama:

$hasil = mysql_query($query);

kembalikan sumber daya php db.

Baris kedua

Sementara ($baris = mysql_fetch_array($hasil))

Mengulangi semua catatan yang dikembalikan oleh kueri.

Gunakan mysql_fetch_assoc sebagai gantinya
Dalam hal ini, baris tersebut memiliki pasangan kunci => nilai.
Sementara taruh saja ini:
print_r($row) dan Anda akan mengerti
Jika Anda menggunakan mysql_fetch_assoc format stringnya adalah:

$baris["nama_kolom1"] = nilai_kolom1; $baris["nama_kolom2"] = nilai_kolom2;

Untuk ini:

$row = mysql_fetch_assoc($result) foreach ($baris sebagai $columnName => $columnValue) ( ​​... )

Anda akan mendapatkan baris pertama dari kueri dan Anda akan mengulangi semua kolom di hasil kueri pertama.

Mengambil bidang hasil tertentu.

Sintaksis:

Int mysql_result(hasil int, int baris [, bidang campuran])

Fungsi mengembalikan nilai bidang bidang di baris hasil dengan angka baris. Parameter bidang dapat menentukan tidak hanya nama bidang, tetapi juga nomornya - posisi di mana kolom "berdiri" ketika tabel dibuat, serta nama lengkap bidang dalam bentuk: "nama_tabel.nama_bidang". Namun, disarankan untuk menggunakan nama bidang bila memungkinkan.

Fungsinya bersifat universal: dengan bantuannya Anda dapat "melewati" seluruh hasil satu sel dalam satu waktu. Meskipun hal ini tidak dilarang, namun hal ini tidak dianjurkan karena hasil_mysql() bekerja cukup lambat.

mysql_fetch_array

Ekstrak catatan berikutnya dari hasil dan tempatkan dalam array asosiatif.

Sintaksis:

Array mysql_fetch_array(int hasil [, int result_type])

Fungsi mysql_fetch_array() mengembalikan baris hasil berikutnya dalam bentuk array asosiatif, di mana setiap bidang dikaitkan dengan elemen dengan kunci yang cocok dengan nama bidang. Selain itu, elemen dengan kunci numerik dan nilai yang sesuai dengan nilai bidang dengan indeks ini ditulis ke dalam array. Dalam array yang dikembalikan, mereka ditempatkan segera setelah elemen dengan kunci "biasa".

Parameter tipe_hasil menentukan tipe array yang dikembalikan dan dapat mengambil salah satu dari nilai berikut: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH(bawaan).

Pertanyaan yang mungkin timbul: mengapa indeks numerik diperlukan? Jawabannya sederhana: faktanya adalah sebagai hasil seleksi, sebenarnya mungkin ada bidang (sebenarnya, kolom) dengan nama yang sama, tetapi dengan indeks yang berbeda. Hal ini terjadi ketika sampel masuk PILIH dihasilkan secara bersamaan dari beberapa tabel.

Mysql_connect($host, $pengguna, $pass); $result=mysql_db_query("database", "pilih id, nama dari tabl"); while($row=mysql_fetch_array($hasil)) ( echo "id: ".$row["id"]."
"; echo "id: ".$baris."
"; echo "nama: ".$baris["nama"]."
"; echo "nama: ".$baris."
"; ); mysql_free_result($hasil);

mysql_fetch_row

Menulis entri ke array bernomor.

Sintaksis:

Array mysql_fetch_row(hasil int)

Fungsi ini mengembalikan daftar array dengan nilai bidang dari baris hasil berikutnya hasil. Jika penunjuk ke posisi hasil saat ini ditempatkan di belakang catatan terakhir (yaitu, tidak ada baris lagi), false dikembalikan. Posisi saat ini digeser ke entri berikutnya, begitu pula panggilan berikutnya mysql_fetch_row() akan mengembalikan baris hasil berikutnya.

Setiap bidang catatan disimpan dalam elemen array bernomor. Penomoran dimulai dari 0.

$r=mysql_query("pilih * dari OutTable di mana umur

Seperti yang Anda lihat, perulangan akan berakhir segera setelah garis habis, mis. Kapan mysql_fetch_row() akan mengembalikan salah.

mysql_fetch_object

Mendapatkan entri di properti suatu objek.

Sintaksis:

Objek mysql_fetch_object(hasil int)

Fungsi ini mengembalikan objek yang propertinya berisi bidang rekaman saat ini. Jika tidak ada catatan lagi, hasilnya salah.

Mysql_connect($host, $pengguna, $pass); $result=mysql_db_query("database", "pilih * dari tabel"); while($rows=mysql_fetch_object($hasil)) ( echo $rows->id; echo $rows->nama; );

mysql_fetch_lengths

Mengembalikan panjang elemen entri.

Sintaksis:

Array mysql_fetch_lengths(hasil int)

Fungsi mysql_fetch_lengths() mengembalikan panjang nilai yang diperoleh menggunakan fungsi mysql_fetch_row(), mysql_fetch_array() atau mysql_fetch_object().

Misalnya pada contoh berikut:

$arr=mysql_fetch_row($hasil); $len=mysql_fetch_lengths($hasil);

Himpunan $len akan berisi panjang elemen array yang sesuai $arr, yaitu $len=strlen(arr) dll.

mysql_fetch_field

Mengembalikan informasi tentang properti suatu objek dan bidang rekaman.

Sintaksis:

Objek mysql_fetch_field(int hasil [, int field_offset])

Dalam parameter opsional bidang_offset jumlah bidang yang propertinya ingin kita peroleh telah ditentukan. Jika parameter ini tidak ditentukan, fungsi tersebut dipanggil setiap kali mysql_fetch_field() properti bidang berikutnya dari kumpulan data dikembalikan hasil.

Objek yang dikembalikan memiliki properti berikut:

  • nama- nama bidang
  • meja- nama tabel tempat bidang tersebut berada
  • panjang maksimal- panjang bidang maksimum
  • bukan_null- 1 jika kolom boleh kosong
  • kunci utama- 1 jika bidangnya adalah kunci
  • kunci_unik- 1 jika hanya nilai unik yang diperbolehkan di lapangan
  • banyak_kunci- 1, jika bidang mengizinkan nilai duplikat
  • numerik- 1 jika bidangnya numerik
  • gumpal- 1 jika bidangnya bertipe BLOB
  • jenis- jenis bidang
  • tidak ditandatangani- 1 jika kolomnya berupa angka yang tidak ditandatangani
  • isi nol- 1, jika field diisi dengan angka nol
mysql_connect($host,$pengguna,$pass); $result=mysql_db_query("database", pilih * dari tabel"); for($i=0;$i "; $param=mysql_fetch_field($result); if(!$param) echo "Tidak ada informasi properti!" ; echo " nama: $param->nama tabel: $param->tabel max_length: $param->max_length not_null: $param->not_null primary_key: $param->primary_key Unique_key: $param->unique_key multiple_key: $param- > multiple_key numerik: $param->gumpalan numerik: $param->tipe gumpalan: $param->type unsigned: $param->unsigned zerofill: $param->zerofill "; )

mysql_field_seek

Memindahkan kursor ke bidang yang ditentukan.

Sintaksis:

Int mysql_field_seek(hasil int, int field_offset)

Fungsi ini mubazir. Cuplikan berikut akan setara:

$param=mysql_fetch_field($hasil, field_offset);

Mysql_field_seek($hasil, field_offset); $param=mysql_fetch_field($hasil);

mysql_field_name

Mengembalikan nama bidang.

Sintaksis:

String mysql_field_name(hasil int, int filed_index)

Fungsi nama_bidang_mysql() mengembalikan nama bidang yang terletak di hasil hasil dengan indeks filed_index(penomoran dimulai dari 0).

$result=mysql_query("PILIH id, nama dari tabel"); echo mysql_field_name($hasil,1); // Cetakan: nama

mysql_field_table

Mengembalikan nama tabel dari mana bidang tersebut diambil.

Sintaksis:

String mysql_field_table(hasil int, int field_offset)

Mengembalikan nama tabel dari mana bidang offset diambil bidang_offset sebagai akibat hasil.

mysql_field_len

Mengembalikan panjang bidang.

Sintaksis:

Int mysql_field_len(hasil int, int filed_offset)

Fungsi ini mengembalikan panjang bidang yang dihasilkan hasil. Bidang, seperti biasa, ditentukan dengan menentukan offsetnya. Panjang di sini bukan berarti ukuran data lapangan dalam satuan byte, melainkan ukuran yang ditentukan saat dibuat. Misalnya, jika suatu bidang bertipe varchar dan dibuat (bersama dengan tabel) dengan tipe varchar(100), maka 100 akan dikembalikan untuk itu.

mysql_field_type

Mengembalikan jenis kumpulan data yang dihasilkan.

Sintaksis:

String mysql_field_type(hasil int, int filed_offset)

Fungsi ini mirip dengan mysql_filed_name(), hanya saja ia tidak mengembalikan nama, tetapi jenis kolom terkait di hasil. Mereka bisa jadi, misalnya, ke dalam, dobel, nyata dll.

Mysql_connect($host,$pengguna,$pass); mysql_select_db("mydb"); $hasil=mysql_query("PILIH * DARI tab"); $fields=mysql_num_fields($hasil); $baris=mysql_num_rows($hasil); $i=0; $tabel=mysql_field_table($hasil,$i); echo "Tabel "$tabel" mempunyai kolom $fields dan catatan $rows
"; echo "Struktur tabel:
"; sementara($i"; $i++; )

mysql_field_flags

Fungsi ini mengembalikan tanda yang digunakan untuk membuat bidang tertentu dalam tabel.

Sintaksis:

string mysql_field_flags(hasil int, int field_offset)

String yang dikembalikan adalah string kata yang dipisahkan oleh spasi, sehingga Anda dapat mengonversinya menjadi array menggunakan fungsi tersebut meledak():

$Bendera=meledak(" ",mysql_field_flags($r,$field_offset));

Rekam bidang di MySQL mungkin memiliki properti tanda berikut:

  • "tidak_nul"
  • "kunci utama"
  • "kunci_unik"
  • "beberapa_kunci"
  • "gumpal"
  • "tidak ditandatangani"
  • "pengisian nol"
  • "biner"
  • "enum"
  • "peningkatan_otomatis"
  • "cap waktu"

mysql_list_fields

Mengembalikan daftar bidang tabel.

Sintaksis:

Ke dalam mysql_list_fields(string nama db, string nama tbl [,int link_identifier])

Fungsi mysql_list_fields() mengembalikan informasi tentang tabel yang ditentukan namatbl dalam basis data nama bd menggunakan ID koneksi link_identifier jika diberikan (jika tidak, koneksi terbuka terakhir). Nilai yang dikembalikan adalah pengidentifikasi hasil, yang dapat diuraikan dengan cara normal. Jika kesalahan -1 dikembalikan, teks pesan kesalahan dapat diperoleh dengan cara biasa.

$link=mysql_connect($host,$pengguna,$pass); $fields=mysql_list_fields("db1", "tabel", $link); $kolom=mysql_num_fields($bidang); // jumlah field dalam tabel // Selanjutnya, cetak nama semua field dalam tabel for($i=0;$i"; )

mysql_num_fields

Fungsi ini mengembalikan jumlah bidang dalam satu baris hasil, yaitu. jumlah kolom dalam hasilnya.

Sintaksis:

Ke dalam mysql_num_fields(hasil ke dalam)

Karena hal di atas, fungsi ini memungkinkan Anda menentukan dimensi horizontal dari "array hasil dua dimensi".

mysql_errno

Mengembalikan nomor kesalahan terakhir.

Sintaksis:

ke dalam mysql_errno()

Fungsi ini mengembalikan nomor kesalahan yang terakhir dicatat, atau 0 jika tidak ada kesalahan.

Pengidentifikasi link_identifier mungkin tidak ditentukan jika hanya satu koneksi yang dibuat selama eksekusi skrip.

Mysql_connect("namadb"); echo mysql_errno().": ".mysql_error()."
";

mysql_error

Mengembalikan pesan kesalahan.

Sintaksis:

Rangkaian mysql_error()

Fungsi ini mengembalikan string yang berisi teks pesan kesalahan atau string kosong jika tidak ada kesalahan.

Mysql_connect("namadb"); echo mysql_errno().": ".mysql_error()."
";