Rumah > Soal Jawab > teks badan
P粉6747571142023-09-05 11:18:10
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).
$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.