THINKPHP 3.1.3 查询数据库的时候查询结果出现NULL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了THINKPHP 3.1.3 查询数据库的时候查询结果出现NULL相关的知识,希望对你有一定的参考价值。
我在使用THINKphp 3.1.3时候,代码如下
$warehouseProduct = D('WarehouseProductList');
$map = array();
$map['productId'] = $productId;
$map['void'] = 'N';
$product = $warehouseProduct->where($map)->find();
echo '<br><br>执行的SQL: '.$warehouseProduct->getLastSql();
dump($product);
当$productId等于570972 时,输出的SQL为:SELECT * FROM `ls_warehouseProductList` WHERE ( `productId` = 570972 ) AND ( `void` = 'N' ) LIMIT 1
这句SQL在数据库可以查询到内容,而这里的 dump($product) 却为NULL。
可给$productId赋值为546069后却可以正常查询到结果,
有人遇到这样的问题没?
$productId等于570972:
$warehouseProduct->getLastSql();
输出的SQL为:
SELECT * FROM `ls_warehouseProductList` WHERE ( `productId` = 570972 ) AND ( `void` = 'N' ) LIMIT 1
用这句SQL在数据库的查询是可以查询到内容的,可在到这里dump($product);输出为NULL
$productId等于546069:
$warehouseProduct->getLastSql();
输出的SQL为:
SELECT * FROM `ls_warehouseProductList` WHERE ( `productId` = 546069 ) AND ( `void` = 'N' ) LIMIT 1
数据库里能查询到内容,这里的dump($product);也可以输出正常内容;
那个这SQL查询有结果没有呢
追问那句SQL在数据库查询有结果,
追答$product = $warehouseProduct->where($map)->select();这样看看
追问嗯,我有试过,一样 dump($product); 为NULL。
追答把$map['void'] = 'N';这句注释再看下有无结果
本回答被提问者采纳thinkphp之切换数据库
1.数据库切换
原因:在我们实际的项目开发中,经常会遇到一个项目使用多个数据库,那么在使用thinkphp框架的时候,存在使用过程中数据库转换使用的问题,或者多个数据库同时使用的问题,接下来一起研究研究如何切换数据库。
首先,我们在使用tp框架的时候会预先定义数据库连接和实例化的时候指定数据库连接,这样我们只能预定义连接一个数据库,然而我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型。
使用方法:
Model->db("数据库编号","数据库配置");
数据库编号:数据库编号用数字格式,对于已经调用过的数据库连接,是不需要再传入数据库连接信息的,系统会自动记录。对于默认的数据库连接,内部的数据库编号是0,因此为了避免冲突,请不要再次定义数据库编号为0的数据库配置。
数据库配置:数据库配置的定义方式:支持数组、字符串以及调用配置参数三种格式。
Db方法 调用后返回当前的模型实例,直接可以继续进行模型的其他操作,所以该方法可以在查询的过程中动态切换:
$this->db(1,"mysql://root:[email protected]:3306/test")->query("查询SQL");
该方法添加了一个编号为1的数据库连接,并自动切换到当前的数据库连接。
当第二次切换到相同的数据库的时候,就不需要传入数据库连接信息了,可以直接使用:
$this->db(1)->query("查询SQL");
那么,当我们需要切换回主数据库时,只需要:
$this->db(0);
例如:定义一个主数据库和一个副数据库:
//主数据库配置0 ‘DB_CONFIG1‘ = array( ‘db_type‘ => ‘mysql‘, ‘db_user‘ => ‘root‘, ‘db_pwd‘ => ‘1234‘, ‘db_host‘ => ‘localhost‘, ‘db_port‘ => ‘3306‘, ‘db_name‘ => ‘thinkphp‘ ), //副数据库配置1 ‘DB_CONFIG2‘ => ‘mysql://root:[email protected]:3306/thinkphp‘;
对于上面例子中的数据库切换:
$this->db(1,"DB_CONFIG1")->query("查询SQL"); $this->db(2,"DB_CONFIG2")->query("查询SQL");
那么在切换数据库后,怎么指向我们需要用到的数据表呢? 使用table方法指定要操作的数据表。
$this->db(1)->table("top_user")->find();
以上是关于THINKPHP 3.1.3 查询数据库的时候查询结果出现NULL的主要内容,如果未能解决你的问题,请参考以下文章
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞