Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
CodeIgniter Oracle select-随机问题_Oracle_Codeigniter - Fatal编程技术网

CodeIgniter Oracle select-随机问题

CodeIgniter Oracle select-随机问题,oracle,codeigniter,Oracle,Codeigniter,对于一个非常简单的select语句,我遇到了一个非常奇怪的问题。这是: 我正在读取一个csv文件(即Excel文件的导出)。字段分隔符为“;”,每个字段用“”括起来 我使用第二个、第三个和第五个字段创建一个SELECT来在DB中查找该信息。换句话说,我在一张表格中根据人们的姓、名和电子邮件来查找他们。例如: SELECT MAX(n_id_persona) AS n_id_persona FROM ( SELECT DISTINCT MAX(p.n_id_persona) AS n_i

对于一个非常简单的select语句,我遇到了一个非常奇怪的问题。这是:

我正在读取一个csv文件(即Excel文件的导出)。字段分隔符为“;”,每个字段用“”括起来

我使用第二个、第三个和第五个字段创建一个SELECT来在DB中查找该信息。换句话说,我在一张表格中根据人们的姓、名和电子邮件来查找他们。例如:

SELECT MAX(n_id_persona) AS n_id_persona 
FROM (
    SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
    FROM PERSONAS p
    WHERE (NO_ACCENTS(p.d_apellidos) LIKE NO_ACCENTS('%Lastname%') 
        AND NO_ACCENTS(p.d_nombres) LIKE NO_ACCENTS('%Firstname%'))
    UNION
    SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
    FROM PERSONAS p
    LEFT JOIN CORREOS c ON (p.n_id_persona = c.n_id_persona)
    WHERE ((c.c_correo LIKE '%email@host.com%')) );
问题是,CodeIgniter不会随机带来任何N_ID_人物角色,但如果我在Oracle SQL Developer中测试相同的查询,它会检索和识别

我起初以为这是一个超时,但被放弃了。另外,我重新设计了查询,因为我认为它们不正确,但不正确。函数NO_ACCENTS()只是用相应的字母替换所有重音字符,并用大写字母书写所有内容。我也尝试不使用这个NO_ACCENTS()函数,得到了同样奇怪的结果

有什么想法吗?这会发生在任何人身上吗

非常感谢

///////////////////////////////////////////////////////////////////////////

这是代码:

controllers/importador.php

public function __construct()
{
    parent::__construct();
    $this->output->enable_profiler(TRUE);
    session_start();
}

public function index()
{
    //Connection info to the DB

    $_SESSION['c'] = $connection_info;

    $this->db = $this->load->database($_SESSION['c'], TRUE, TRUE);
    $this->load->model('Importador_model');

    //Reads the csv
    $this->load->library('csvreader');

    $filePath = '/home/vcl/Desktop/CRM/File_name.csv';

    $data['csvData'] = $this->csvreader->parse_file($filePath);

    foreach($data['csvData'] as $linea){

        $data['coincidencia'] = $this->Importador_model->Buscar_contacto(str_replace('\'', '\'\'', $linea['Apellido']), str_replace('\'', '\'\'', $linea['Nombre']), $linea['Email']);  

        echo $linea['Apellido'].' '.$linea['Nombre'].''.$linea['Entrevista'].'<br>';
        $temp = $data['coincidencia']->row();
        echo $temp->N_ID_PERSONA;
        echo '<br>';
    }
}
这有帮助吗?

您可以使用“修剪”功能,有时您的测试条件之间可能有空格,请尝试以下操作:

选择

WHERE TRIM((NO_ACCENTS(p.d_apellidos)) LIKE TRIM(NO_ACCENTS('%Lastname%')) 
    AND TRIM(NO_ACCENTS(p.d_nombres)) LIKE TRIM(NO_ACCENTS('%Firstname%')))

请注意,我在表格字段(p.d_apelidos)中添加了trim,在(无重音(“%Lastname%”)中也添加了trim)

当您说“随机”时,您的意思是,对于相同的参数,您有时会得到数据,有时则不会得到数据?调用此SQL的Codeigniter PHP代码是什么样子的?例如,在这种情况下,是20个中的1个。它应该检索数据,但它没有。但在其他情况下,同样的查询也能很好地工作。我正在用剩下的代码编辑这个问题。
WHERE TRIM((NO_ACCENTS(p.d_apellidos)) LIKE TRIM(NO_ACCENTS('%Lastname%')) 
    AND TRIM(NO_ACCENTS(p.d_nombres)) LIKE TRIM(NO_ACCENTS('%Firstname%')))