Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在codeigniter中比较表中的前4个字符并从数据库中获取数据_Php_Mysql_Codeigniter - Fatal编程技术网

Php 在codeigniter中比较表中的前4个字符并从数据库中获取数据

Php 在codeigniter中比较表中的前4个字符并从数据库中获取数据,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有两个不同的表格,分别是推荐和页面标题。从数据库获取页面标题时。我需要比较前4个字符,如果两者都匹配,那么我应该得到数据 function getpagetitle($id) { $this->db->select('P.*,T.testimonial_name'); $this->db->from('pagetitle AS P'); $this->db->join('testimonials AS T

我有两个不同的
表格
,分别是
推荐
页面标题
。从
数据库
获取
页面标题时。我需要比较前4个字符,如果两者都匹配,那么我应该得到数据

function getpagetitle($id)
{

    $this->db->select('P.*,T.testimonial_name');        
    $this->db->from('pagetitle AS P');      
    $this->db->join('testimonials AS T','SUBSTR(T.testimonial_name, 4) = SUBSTR(P.page_title, 4)','INNER');
    $this->db->where(array('P.page_title'=>$id));       
    $q=$this->db->get();        
    //var_dump($this->db->last_query());
    //print_r($q->num_rows());
    if($q->num_rows()>0)
      {
    $output = $q->result();

   return $output[0];
        }
    else
    {
    return false;
    }
}
数据库表

推荐信:

+----------------+-------------------+-------------+
| testimonial_id |  testimonial_name | client_name |
+----------------+-------------------+-------------+
| 1              |  testimonial      | abc         |
| 2              |  testimonial      | def         |
+----------------+-------------------+-------------+
页面标题

+--------------+-------------+
| pagetitle_id | pagetitle   |   
+--------------+-------------+
|  1           | testimonial |
|  2           | career      |
+--------------+-------------+
我认为你必须在mysql中使用, 因此,如果我们要更改您的查询,它必须是这样的:

select P.*,T.testimonial_name from pagetitle AS P , testimonials as T (
 select IF 'SUBSTR(T.testimonial_name, 4) = SUBSTR(P.page_title, 4)'  
 where P.page_title>5
)

我不测试它,但我认为它一定是真的

如果您还没有找到任何解决方案,请尝试下面的代码

$testimonials = $this->db->query("SELECT `P`.*, `T`.`testimonial_name` 
FROM (`pagetitle` P) INNER JOIN `testimonials` T ON 
((SUBSTR(`T`.`testimonial_name`, 1, 4)) = (SUBSTR(`P`.`page_title`, 1, 4))) 
WHERE `P`.`page_title` = SUBSTR('{$id}', 1, 4)")->result_array();
print_r($testimonials);
/* Output of $testimonials will be like below:
Array
(
    [0] => Array
        (
            [fieldname_1] => val
            [fieldname_2] => val
        )

    [1] => Array
        (
            [fieldname_1] => val
            [fieldname_2] => val
        )
)
*/
if(count($testimonials) > 0) {
//$output = $testimonials->result();
return $testimonials[0];
} else {
return false;
}

@在这里,他们使用了like运算符,如果证明名称是证明名称,页面标题是证明名称,那么它将不匹配,那么我们如何才能获得用于此目的的数据?我只需要使用SUBSTR比较前4个字符(
T
证明名称
,4)=SUBSTR(
P
页面标题
,4)加入。@s你能在我的代码中编辑吗?有帮助吗?不理解query@user8001297这个查询告诉mysql,在SUBSTR(T.esticional_name,4)=SUBSTR(P.page_title,4)为false之前,不要从title>5的位置进行选择,因此如果该语句为true,您的查询将以Unknown列Conditional的形式出现错误,其中的子句我们在查询中是否有“Conditional”?此外,在指定的“数据库表”中也没有这样的列。推荐是我的页面标题,没有这样的列带有推荐$esticionals=$this->db->query(“SELECT
P
*,
T
esticional\u name
FROM(
pagetitle
P)内部连接
esticionals
T ON(
SUBSTR(
T
testional\u name
,1,4))=(SUBSTR(
P
page\u title
,1,4)),其中
P
page\u title
='{$id}')->结果数组()//打印($testionals);如果($testionals->num rows()>0){$output=$testional结果();返回$output[0];否则{return false;}您不需要检查
num_rows
do
count($commentials)
&
$output=$restimonials