SQL中条件字段和表字段名相同,造成全表查询
各位大神好,在下是小菜鸟一枚,在实践中发现,类似如下的语句:
<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ; </code>
其中$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>
其中$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>
对于前端输入值,后端必须过滤,建议使用sql预处理。
SQL的条件值都加''
<code>sid = '$sid'</code>
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>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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.

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.

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)

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 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.

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.

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.

不同数据库系统添加列的语法为: 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);
