Maison développement back-end tutoriel php 有and 有OR的依据几个字段生成SQL语句

有and 有OR的依据几个字段生成SQL语句

Jun 13, 2016 pm 01:16 PM
comparator quot

有and 有OR的根据几个字段生成SQL语句
有如下图的数据表信息,有什么好的方法把它们组合成一条SQL?如果全是and 的或者全是or的,这方法好办,可是两个同时都有的,怎么办呢?



全是AND 或OR的话

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
        $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''";
        $query = mysql_query($sql);
        $sql = '';
        while($row = mysql_fetch_assoc($query)){
            if($row['comparator']=='eq'){$comparator="=";}
            else{$comparator=$row['comparator'];}
            $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
        }

Copier après la connexion


------解决方案--------------------
SQL code
select * from sk_cvfilter where cvid=58 and columnname!='' and andor='and' or andor='or'
<br><font color="#e78608">------解决方案--------------------</font><br>你的这个记录有问题,为什么呢?<br><br>例如出现一个 (a = 1 or (b=2 and b=3)),这个时候,你是怎么记录的?<br><br>我猜是这样的<br><br>columnname   comparator   value   andor<br>a            eq           1       or<br>b            eq           2       and<br>c            eq           3      <br><br>这个时候问题出现了,假如你不知道上面的那个关系式(a = 1 or (b=2 and b=3)),<br>如果只从结构看的话,你是认为<br><br>(a = 1 or b =2 ) and b = 3<br><br>还是<br><br>  a = 1 or (b=2 and b=3)<br><br>上述问题不考虑,所有or为一个条件和其他条件and的写法<br><br><br>
Copier après la connexion
PHP code

<?php $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''";
$query = mysql_query($sql);
$sql = '';

// 记录上一句的是不是or
$is_last_or = false;


while($row = mysql_fetch_assoc($query)){
    if($row['comparator']=='eq'){$comparator="=";}
    else{$comparator=$row['comparator'];}
    
    
    if($is_last_or) {
        if($row['andor'] == 'and') {
            // 和下一句是and关系说明括号要结束了
            $sql .=$row['columnname'].$comparator."'".$row['value']."' ) ".$row['andor'].' ';
        } else {
            // 持续括号里的内容
            $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
        }
    } elseif($row['andor'] == 'or') {
        // 如果有or则意味着和下一句有或的关系(因为你这里没有括号)
        $is_last_or = true;
        // 加上括号吧
        $sql .= '( ' . $row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
    } else {
        $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
    }
    
}
<br /><font color="#e78608">------解决方案--------------------</font><br>
Copier après la connexion
PHP code

<?php $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''";
$query = mysql_query($sql);
$sql = '';

// 记录上一句的是不是or
$is_last_or = false;


while($row = mysql_fetch_assoc($query)){
    if($row['comparator']=='eq'){$comparator="=";}
    else{$comparator=$row['comparator'];}
    
    
    if($is_last_or) {
        if($row['andor']  != 'or') {
            // 和下一句是and或者结束了关系说明括号要结束了
            $sql .=$row['columnname'].$comparator."'".$row['value']."' ) ".$row['andor'].' ';
        } else {
            // 持续括号里的内容
            $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
        }
    } elseif($row['andor'] == 'or') {
        // 如果有or则意味着和下一句有或的关系(因为你这里没有括号)
        $is_last_or = true;
        // 加上括号吧
        $sql .= '( ' . $row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
    } else {
        $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' ';
    }
    
} <div class="clear">
                 
              
              
        
            
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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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 utiliser Comparable et Comparator pour supprimer la réorganisation en Java Comment utiliser Comparable et Comparator pour supprimer la réorganisation en Java May 11, 2023 pm 03:43 PM

1. Tri et déduplication Dans le travail quotidien, il existe toujours des scénarios qui nécessitent un certain filtrage de l'ensemble de résultats. Par exemple, l'ensemble de résultats obtenu après avoir interagi avec un tiers doit être à nouveau trié et dédupliqué. Dans ce cas, l'ensemble de résultats sera dédupliqué en fonction d'un certain champ, ou trié par un certain champ. En Java, lorsqu'il s'agit de déduplication, on peut facilement penser aux caractéristiques de Set (non ordonné, pas de duplication), et TreeSet (ordonné, pas de duplication) peut également spécifier des règles de déduplication (généralement des jeux de résultats ascendants après la déduplication). En matière de tri, nous pouvons facilement penser à différents algorithmes de tri, mais Java fournit déjà des fonctions de tri, telles que la méthode sort() dans les collections, et vous pouvez également spécifier les champs de tri et l'ordre croissant et décroissant. Permettez-moi de dire encore une chose ici, les caractéristiques de Set (pas d'ordre et pas de duplication) : désordre : désordre

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Comment utiliser Comparable et Comparator en Java Comment utiliser Comparable et Comparator en Java May 03, 2023 am 10:07 AM

Comparable et ComparatorComparable et Comparator sont deux interfaces Java liées au tri, également appelées tri naturel et tri personnalisé. J'ai récemment lu du contenu pertinent et je vais maintenant enregistrer mon propre statut d'apprentissage ci-dessous. Comparable et Comparator sont deux interfaces de tri, utilisées pour implémenter la fonction de tri dans les collections Java. Les fonctions spécifiques peuvent être obtenues en visualisant l'API. Comparable Voici une brève introduction tirée de la documentation de l'API : Cette interface impose un ordre total sur les objets de chaque classe qui

Comment utiliser Comparateur en Java Comment utiliser Comparateur en Java May 10, 2023 pm 06:31 PM

1. Expliquez que Java fournit une interface de comparaison Comparable pour la comparaison. Toutes les classes qui implémentent cette interface implémentent dynamiquement cette méthode de comparaison. En fait, Java fournit non seulement une interface de comparaison, mais propose également une autre interface. L'interface Comparator dispose également d'une fonction de comparaison, mais cette interface se concentre sur la comparaison des conteneurs. 2. Instance Comparator était largement utilisé avant Java8. Java8 met non seulement à niveau les interfaces fonctionnelles, mais étend également les méthodes par défaut. Comparatorcomparator=(p1,p2)->p1.firstName.compareTo(p2.firstName);Personp1=ne

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 Jun 13, 2016 am 10:24 AM

为什么我在php上写的这个代码,在浏览器上什么都不显示啊

图片消失怎么解决 图片消失怎么解决 Apr 07, 2024 pm 03:02 PM

图片消失如何解决先是图片文件上传$file=$_FILES['userfile'];  if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

图片消失怎么解决 图片消失怎么解决 Jun 13, 2016 am 10:09 AM

图片消失如何解决先是图片文件上传$file=$_FILES['userfile'];  if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

See all articles