Dapatkan metadata set hasil daripada pangkalan data tanpa mengetahui pernyataan SQL
P粉506963842
2023-09-04 14:18:17
<p>Saya menggunakan PHP dan HTML dan mencipta pangkalan data. Saya disambungkan ke pangkalan data. Saya tertanya-tanya sama ada terdapat cara untuk mendapatkan semula data daripada pangkalan data dengan meminta pengguna memasukkan keseluruhan pernyataan SQL. Saya sangat berminat dengan cara mendapatkan data tanpa menyebut $row['id']</p>
<p>Demi hujah, mereka akan mengetahui lajur dan ID serta segala-galanya tentang pangkalan data. </p>
<p>Semua yang saya lihat ialah anda perlu mengetahui lajur yang sedang disoal sebelum anda boleh mengakses data. </p>
Jika pengguna anda ingin menyediakan pernyataan SQL untuk digunakan, mereka mesti tahu nama jadual dan lajur yang mereka mahukan.
Anda boleh bertanya
information_schema.COLUMNS
jadual untuk mencari nama jadual dan lajur serta jenis data.Sebagai alternatif, selepas melaksanakan pertanyaan, anda boleh mendapatkan metadata lajur. Untuk PDO, gunakan $stmt->getColumMeta($columnNumber);. Menggunakan mysqli gunakan ->result_metadata() seperti ini (tidak debug).
Ini menggunakan ->fetch_field() untuk mendapatkan banyak maklumat berguna tentang setiap lajur dalam set hasil.
Tetapi meminta pengguna untuk memberikan anda pernyataan SQL adalah risiko keselamatan yang besar. Jika anda mempercayai pengguna untuk memberikan anda pernyataan SQL, anda juga mesti mempercayai mereka untuk tidak merosakkan atau merosakkan data anda. Jika sistem anda terbuka kepada internet global, anda akan kehilangan data. Kadang-kadang orang bertanya kepada saya bagaimana saya tahu ini.