Table des matières
回复内容:
Maison développement back-end tutoriel php SQL中条件字段和表字段名相同,造成全表查询

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

Aug 18, 2016 am 09:15 AM
mysql php sql注入 sql语句

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

<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ;
</code>
Copier après la connexion
Copier après la connexion

其中$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>
Copier après la connexion
Copier après la connexion

其中$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>
Copier après la connexion

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

SQL的条件值都加''

<code>sid = '$sid'</code>
Copier après la connexion

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>
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Comment utiliser l'insert de l'instruction SQL Comment utiliser l'insert de l'instruction SQL Apr 09, 2025 pm 06:15 PM

L'instruction INSERT SQL est utilisée pour insérer des données dans une table. Les étapes incluent: Spécifiez la table cible pour répertorier les colonnes à insérer. Spécifiez la valeur à insérer (l'ordre des valeurs doit correspondre au nom de la colonne)

Comment rédiger un tutoriel sur la façon de connecter trois tables dans les instructions SQL Comment rédiger un tutoriel sur la façon de connecter trois tables dans les instructions SQL Apr 09, 2025 pm 02:03 PM

Cet article présente un tutoriel détaillé sur la jonction de trois tables à l'aide de instructions SQL, guidant les lecteurs pour apprendre à corréler efficacement les données dans différentes tables. Avec des exemples et des explications de syntaxe détaillées, cet article vous aidera à maîtriser les techniques de jonction des tables en SQL, afin que vous puissiez récupérer efficacement les informations associées de la base de données.

Comment créer des tables avec SQL Server à l'aide de l'instruction SQL Comment créer des tables avec SQL Server à l'aide de l'instruction SQL Apr 09, 2025 pm 03:48 PM

Comment créer des tables à l'aide de instructions SQL dans SQL Server: Ouvrez SQL Server Management Studio et connectez-vous au serveur de base de données. Sélectionnez la base de données pour créer le tableau. Entrez l'instruction Créer la table pour spécifier le nom de la table, le nom de la colonne, le type de données et les contraintes. Cliquez sur le bouton Exécuter pour créer le tableau.

Comment se connecter à MySQL local à Navicat Comment se connecter à MySQL local à Navicat Apr 09, 2025 am 07:45 AM

Pour se connecter à une base de données MySQL locale à l'aide de NAVICAT: créez une connexion et définissez le nom de connexion, l'hôte, le port, le nom d'utilisateur et le mot de passe. Testez la connexion pour vous assurer que les paramètres sont corrects. Enregistrez la connexion. Sélectionnez une nouvelle connexion dans la liste de connexions. Double-cliquez sur la base de données à laquelle vous souhaitez vous connecter.

Comment se connecter aux bases de données Comment se connecter aux bases de données Apr 09, 2025 am 06:45 AM

Pour vous connecter à une base de données à l'aide de NAVICAT, effectuez les étapes suivantes en séquence: créez une connexion dans Navicat. Entrez le nom d'hôte, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données. Ajustez les paramètres avancés (facultatif). Enregistrez la connexion. Tester la connexion. Connectez-vous à la base de données. Affichez l'objet de base de données.

Quelle est la différence entre la syntaxe pour ajouter des colonnes dans différents systèmes de base de données Quelle est la différence entre la syntaxe pour ajouter des colonnes dans différents systèmes de base de données Apr 09, 2025 pm 02:15 PM

不同数据库系统添加列的语法为 : MySQL: alter table table_name Ajouter Column_name data_type; postgresql: alter table table_name Add Column Column_name data_type; Oracle: alter table table_name add (chronn_name data_type); sql server: alter alter table_name Add Column_name data__

See all articles