Sql Codeigniter数据库查询错误-未返回预期结果

Sql Codeigniter数据库查询错误-未返回预期结果,sql,codeigniter,Sql,Codeigniter,我在数据库中测试了此查询,结果很好: 从变量中选择*值='逗号-:-' 我得到一个结果。现在,我将该值存储在一个变量中,并使用query类 $value='逗号-:-' 更多 希望这能奏效 尝试使用这些工具来检查查询 echo $this->db->last_query(); print_r($this->db->result_array($get_data)); 我发现了问题——是重新路由功能导致了这场灾难。更具体地说,是系统核心路由文件夹中的段过滤功能 事情是这样

我在数据库中测试了此查询,结果很好:

从变量中选择*值='逗号-:-'

我得到一个结果。现在,我将该值存储在一个变量中,并使用query类

$value='逗号-:-' 更多

希望这能奏效

尝试使用这些工具来检查查询

echo $this->db->last_query();

print_r($this->db->result_array($get_data));

我发现了问题——是重新路由功能导致了这场灾难。更具体地说,是系统核心路由文件夹中的段过滤功能

事情是这样的:

我创建了一个带有编码值逗号的锚,并配置了路由,将uri重新路由到控制器中的一个函数。每次单击链接时,都会传递该值,并可能会将其重新路由到函数。它做到了,几乎所有我使用的值。除了这个

第一个假设:db查询函数正在转义这些值。但我关闭了escape,并通过打印检查了查询。该值是正确的。然后我尝试了其他查询格式,但仍然没有结果。结论:数据库查询功能没有问题

第二个假设:数据必须损坏-虽然值是正确的,但我得到的是逗号:-,它不会返回任何内容,除非我手动键入值。所以我测试了这个: 我创建了一个单独的值,并将其设置为与我在有效值中键入的值相等。然后,我使用VAR_DUMP打印原始值one passed和新创建的值。 事实证明,参数值1不起作用的是长度为14的字符串,而我的新变量是长度为10的字符串。世界跆拳道联盟?结论:在重新路由/传递过程中发生了一些改变变量的事情

我回到config文件夹,并将重路由中的变量$I替换为文字字符串值逗号:-。你猜怎么着?它工作得很好。为了确保它不是正则表达式,我编写了自己的自定义正则表达式,它匹配得很好,但值仍在更改。所以我决定躲起来

我将routes类中的URI操作追溯到_explode_segment函数,该函数用于执行正则表达式并分析URI中的其他变量。它也做了这件事

_过滤器uri$str

对于匹配的uri段的每个部分

它做了什么?它将可编程字符(如和)替换为它们的HTML实体。现在,如果您不知道,html实体的长度比url编码长。哈哈。发生的事情是这样的:


原始段:逗号-%3A-%29您是否尝试运行活动查询以查看是否存在差异$这->数据库->获取_其中的'variables',数组'value'=>$value;我刚试过,没什么区别。我打印出了查询,它仍然可以正常工作。嗯,我也试过这个-同样的结果没有结果。我还测试了它返回的查询,它在数据库上运行良好。。。
$sql = "SELECT * FROM variables WHERE value = ?";
$this->db->query($sql, array('commas-:-)')); 
$get_data = $this->db->from('variables')
                      ->where('value', $value)
                        ->get();
echo $this->db->last_query();

print_r($this->db->result_array($get_data));