CodeIgniter php sql
CI对数据库句的操作有时很方便有时却让人为难,例如括号的问题。括号的问题来自于处理and和or的优先级关系。
有时需要or高于and。$this->db->where()和$this->db->orwhere()要如何做到呢。
第一种:自己写sql语句。可是有时候已经写好的程序要这样改动很难。
第二种:自己写where语句,有可能会遇到这样的问题。
where()和orwhere()其实是雷同的函数。
手册中有这样一段:
$this->db->where();
本函数允许你使用四种方法中的一种来设置 WHERE 子句:
说明: 传递给本函数的所有值都会被自动转义,以便生成安全的查询。
简单的 key/value 方法: $this->db->where('name', $name);// 生成: WHERE name = 'Joe'
请注意等号已经为你添加。
如果你多次调用本函数,那么这些条件会被 AND 连接起来:
$this->db->where('name', $name);$this->db->where('title', $title);
$this->db->where('status', $status);
// WHERE name = 'Joe' AND title = 'boss' AND status = 'active' 自定义 key/value 方法:
你可以在第一个参数中包含一个运算符,以便控制比较:
$this->db->where('name !=', $name);$this->db->where('id
// 生成: WHERE name != 'Joe' AND id $name, 'title' => $title, 'status' => $status);
$this->db->where($array);
// 生成: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
使用这个方法时你也可以包含运算符:
$array = array('name !=' => $name, 'id $id, 'date >' => $date);$this->db->where($array); 自定义字符串:
你可以手动的编写子句:
$where = "name='Joe' AND status='boss' OR status='active'";$this->db->where($where);
$this->db->where() 接受可选的第三个参数。如果你将它设置为 FALSE, CodeIgniter 将不会为你那些包含反勾号的字段名或表名提供保护。
$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);
标红的地方很重要,第4所说的:
$where = "name='Joe' AND status='boss' OR status='active'";
$this->db->where($where);
其实是行不通的。where()会给语句加上``,然后说:
"`name='Joe' AND status='boss' OR status='active'`"sql语句有错。
第三种:
改源代码:
CI论坛里有这样一段:
... ...
给like数组加上括号即可。
修改system\database\DB_active_rec.php
约第1559行
PHP
if ( count ( $this -> ar_like ) > 0 )
{
if ( count ( $this -> ar_where ) > 0 )
{
$sql .= "nAND " ;
}
$sql .= implode ( "n" , $this -> ar_like ) ;
}
改为
PHP
if ( count ( $this -> ar_like ) > 0 )
{
if ( count ( $this -> ar_where ) > 0 )
{
$sql .= "nAND (" ;
}
$sql .= implode ( "n" , $this -> ar_like ) ;
if ( count ( $this -> ar_where ) > 0 )
{
$sql .= ")" ;
}
}
希望CI开发者尽快修补or_like无法内部形成括号的BUG
这个论坛很脑残,显示回车符\n会掉一个斜杠,懂PHP的自己加上。
源自:http://codeigniter.org.cn/forums/thread-1270-1-1.html
同理,可以对where修改,但是这种只是对where语句的开始和末尾加。
对于实际的需要,几种合起来用基本情况都能解决了。不知道是不是还有更好的。呵呵,那应该就是直接修复CI源代码内部形成括号的BUG了吧

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds





Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
