使用REGEXP
[[:<:]]
和[[:>:]]
使用$this->db->get_where('news', array("News_Tag REGEXP BINARY "=>"[[:<:]]data[[:>:]]"));
查询CodeIgniter上的数据时出现问题。
系统会在小于号的正面和背面添加空格字符。
例如:
SELECT * FROM `web_news` WHERE `News_Tag` REGEXP BINARY '[[: < :]]data[[:>:]]'
将成为:
<script>
var codesArray = [];
function ajax_get_results() {
var results = document.getElementById("results");
var select = document.getElementById("code");
var hr = new XMLHttpRequest();
hr.open("GET", "ainekood_pohiandmed.json", true);
hr.setRequestHeader("Content-type", "application/json", true);
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200){
var data = JSON.parse(hr.responseText);
results.innerHTML = "";
// <div id="results"> - Should show this in the div!
results.innerHTML = "<b>"+data[0].ainekood+"</b></br>"+data[0].aineNimi+" (<i>"+data[0].courseName+"</i>)</br>EAP: "+data[0].eap+"</br>Hindamisviis: "+data[0].hindamisviis+"</br>Semester: "+data[0].semester+"</br>Oppejoud: "+data[0].ppejud+"</hr>";
// Adds the codes into the Select-form
for(var obj in data){
var opt = document.createElement('option');
var code = data[obj].ainekood;
opt.value = code;
opt.innerHTML = code;
select.appendChild(opt);
// Adds the codes into the array
codesArray.push(code);
}
// Gets all of the codes
//console.log(codesArray);
}
}
hr.send(null);
results.innerHTML = "requesting...";
// Doesn't get any codes from here...
//console.log(codesArray);
}
// This doesn't work...
function expandDivs(elem) {
for(var code in codesArray){
if(elem.value == codesArray[code]){
document.getElementById('results').style.display = "block";
console.log("Match found: "+elem.value+" EQUALS "+codesArray[code]);
}else{
document.getElementById('results').style.display = "none";
console.log("No matches found");
}
}
}
// Manually comparing works
function expandDiv(elem) {
if(elem.value == "AIA6010" || elem.value == "AIA6020"){
document.getElementById('results').style.display = "block";
console.log("Match found: "+elem.value);
}else{
document.getElementById('results').style.display = "none";
console.log("No matches found");
}
}
</script>
并导致错误。
我该如何解决这个问题?
答案 0 :(得分:2)
有同样的问题,并通过从正则表达式定义中删除CodeIgniter的Active Records转义来解决它。
只需在get_where子句中添加FALSE作为第3个参数,并在表达式中添加单引号:
$this->db->get_where('news', array("News_Tag REGEXP BINARY "=>"'[[:<:]]data[[:>:]]'"), FALSE);
答案 1 :(得分:0)
感谢Danyal Sandeelo
的回答,我找到了解决方案:
$this->db->query("SELECT * FROM web_news WHERE News_Tag REGEXP BINARY
'[[:<:]]data[[:>:]]'");