Dapatkan metadata set hasil daripada pangkalan data tanpa mengetahui pernyataan SQL
P粉506963842
P粉506963842 2023-09-04 14:18:17
0
1
557
<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>
P粉506963842
P粉506963842

membalas semua(1)
P粉674757114

Jika pengguna anda ingin menyediakan pernyataan SQL untuk digunakan, mereka mesti tahu nama jadual dan lajur yang mereka mahukan.

Anda boleh bertanya information_schema.COLUMNSjadual 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).

$stmt = $mysqli->prepare("SELECT what,ever,else FROM table");
$stmt->execute();
$metadata = $stmt->result_metadata();
$column_count = $mysqli->field_count();
$column_names = [];
for ($colnum = 0; $colnum < $column_count; $colnum++) {
    $field = $metadata->fetch_field();
    $column_names [] = $field->name;
}
$metadata->close();

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan