gpt4 book ai didi

php - MySQL 使用 codeIgniter active query 或 alt 搜索所有文件。转义(像+等于)

转载 作者:行者123 更新时间:2023-11-30 01:33:56 26 4
gpt4 key购买 nike

已登录$Account = 2; $SearchString = "Sally Do";

$search_array = explode(' ',$SearchString);

人员表示例:

ID | Account | FirstName | LastName | Misc Other
---------------------------------------------------
1 | 1 | John | Doe | Testing
2 | 2 | John | Doe | Pick Me
3 | 2 | Jonh | Bob | Not Me

如果可能的话,我想搜索所有表字段,而无需指定它们并转义 LIKE 的值,或者最好使用 CodeIgniter 的 Active Query。

SELECT * FROM poeple WHERE Account = 2 AND 
(

PHP

foreach $search_array
{
FirstName LIKE '%svalue%' OR LastName LIKE '%svalue%'
}

)

转义会破坏 SQL 查询,我确信我可能只是做错了什么......

$this->db->escape($search_array[0]);
$this->db->escape($search_array[1]);

我更喜欢纯粹的主动查询,但我不确定它是否可能?

$query = $this->db->select('*')->from('people')->where('Account', $Account)->like(???)->get();

主动查询的主要问题是缺乏 ( ) 支持,因此帐户不会成为 OR

决定使用现有的转义函数(内置于 CI 中)与非事件查询一起使用

function escape_string($str, $like = FALSE)
{
if (is_array($str)){
foreach ($str as $key => $val){
$str[$key] = escape_string($val, $like);
}
return $str;
}
mysql_real_escape_string($str);
if ($like === TRUE){
$str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
}
return $str;
}

最佳答案

试试这个方法

$this->db->select('*');
$this->db->from('people');
$this->db->where('acount',$account);
if($first_name!='')
{
$this->db->like('first_name',$first_name);
}
if($last_name!='')
{
$this->db->like('last_name',$last_name);
}

关于php - MySQL 使用 codeIgniter active query 或 alt 搜索所有文件。转义(像+等于),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com