Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang tutorial php SQL中条件字段和表字段名相同,造成全表查询

SQL中条件字段和表字段名相同,造成全表查询

Aug 18, 2016 am 09:15 AM
mysql php suntikan sql pernyataan sql

各位大神好,在下是小菜鸟一枚,在实践中发现,类似如下的语句:

<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ;
</code>
Salin selepas log masuk
Salin selepas log masuk

其中$sid为前端传过来的数值,seller_item_classify为表明,sid为表中的一个字段名;
如果$sid传过来的值正好是'sid'的时候,SQL的这个where就失效了,造成了全表查询;

因为在生产环境中,$sid的值可能是数值,可能是char;我应该在php里做对前端输入值的过滤?

请问各位是如何看这个问题?

回复内容:

各位大神好,在下是小菜鸟一枚,在实践中发现,类似如下的语句:

<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ;
</code>
Salin selepas log masuk
Salin selepas log masuk

其中$sid为前端传过来的数值,seller_item_classify为表明,sid为表中的一个字段名;
如果$sid传过来的值正好是'sid'的时候,SQL的这个where就失效了,造成了全表查询;

因为在生产环境中,$sid的值可能是数值,可能是char;我应该在php里做对前端输入值的过滤?

请问各位是如何看这个问题?

<code>"SELECT * FROM seller_item_classify where sid='$sid' order by cweight asc ;"</code>
Salin selepas log masuk

对于前端输入值,后端必须过滤,建议使用sql预处理。

SQL的条件值都加''

<code>sid = '$sid'</code>
Salin selepas log masuk

as 别名 好使吗?

加上单引号就解决了

'SELECT * FROM seller_item_classify where sid='.$sid.' order by cweight asc ;'
用pdo预处理吧

<code><?php $sid = issset($_REQUEST['sid']) ?  htmlspecialchars(trim($_REQUEST['sid'])) : '';
if (!$sid or $sid=='sid') {
    // 非法请求 这里可以抛出一些异常
}</code></code>
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Cara Menggunakan Penyata SQL Masukkan Cara Menggunakan Penyata SQL Masukkan Apr 09, 2025 pm 06:15 PM

Pernyataan sisipan SQL digunakan untuk memasukkan data ke dalam jadual. Langkah -langkah termasuk: Tentukan jadual sasaran untuk menyenaraikan lajur yang akan dimasukkan. Tentukan nilai yang akan dimasukkan (urutan nilai mesti sesuai dengan nama lajur)

Cara Menulis Tutorial Cara Menghubungkan Tiga Jadual dalam Penyataan SQL Cara Menulis Tutorial Cara Menghubungkan Tiga Jadual dalam Penyataan SQL Apr 09, 2025 pm 02:03 PM

Artikel ini memperkenalkan tutorial terperinci mengenai menyertai tiga jadual menggunakan penyataan SQL, membimbing pembaca untuk mengetahui cara mengaitkan data secara berkesan dalam jadual yang berbeza. Dengan contoh -contoh dan penjelasan sintaks yang terperinci, artikel ini akan membantu anda menguasai teknik -teknik jadual dalam SQL, supaya anda dapat mengambil maklumat yang berkaitan dengan pangkalan data dari pangkalan data.

Cara membuat jadual dengan SQL Server menggunakan pernyataan SQL Cara membuat jadual dengan SQL Server menggunakan pernyataan SQL Apr 09, 2025 pm 03:48 PM

Cara membuat jadual menggunakan penyataan SQL di SQL Server: Buka SQL Server Management Studio dan sambungkan ke pelayan pangkalan data. Pilih pangkalan data untuk membuat jadual. Masukkan pernyataan Buat Jadual untuk menentukan nama jadual, nama lajur, jenis data, dan kekangan. Klik butang Jalankan untuk membuat jadual.

Cara menyambung ke mysql tempatan di navicat Cara menyambung ke mysql tempatan di navicat Apr 09, 2025 am 07:45 AM

Untuk menyambung ke pangkalan data MySQL tempatan menggunakan Navicat: Buat sambungan dan tetapkan Nama Sambungan, Hos, Port, Nama Pengguna, dan Kata Laluan. Uji sambungan untuk memastikan parameter betul. Simpan sambungan. Pilih sambungan baru dari senarai sambungan. Klik dua kali pangkalan data yang ingin anda sambungkan.

Cara menyambung ke pangkalan data Cara menyambung ke pangkalan data Apr 09, 2025 am 06:45 AM

Untuk menyambung ke pangkalan data menggunakan Navicat, lakukan langkah -langkah berikut dalam urutan: Buat sambungan di Navicat. Masukkan nama hos, port, nama pengguna, kata laluan, dan nama pangkalan data. Laraskan tetapan lanjutan (pilihan). Simpan sambungan. Uji sambungan. Sambung ke pangkalan data. Lihat objek pangkalan data.

Apakah perbezaan antara sintaks untuk menambahkan lajur dalam sistem pangkalan data yang berbeza Apakah perbezaan antara sintaks untuk menambahkan lajur dalam sistem pangkalan data yang berbeza Apr 09, 2025 pm 02:15 PM

不同数据库系统添加列的语法为: mysql: alter jadual meja_name tambah column_name data_type; postgresql: alter table table_name tambah lajur column_name data_type; oracle: alter table table_name tambah (column_name data_type);

See all articles