所以我有这个功能来搜索 MySQL 数据库中的条目:
<?php
private function SearchContributors($search)
{
$search_pieces = explode(' ', $search);
if (count($search_pieces) == 1 )
{
$this->db->like('firstname', $search);
$this->db->or_like('lastname', $search);
$result = $this->db->get(); //the line from the error message below
}
//Other stuff for 2 and more pieces
return $result;
}
?>
我两次使用该功能。
案例 A是用户发起的搜索,并从 URL ( domain.com/contributors/?x=paul
) 获取搜索查询。这工作正常。
<?php
if (isset($_GET['x']))
{
$x = $_GET['x'];
$result = $this->SearchContributors($x);
}
?>
案例 B是当用户输入无效的 slug 名称(domain.com/contributors/paul
而不是domain.com/contributors/pauline-surname
)并直接获取搜索查询时的备份:
<?php
$this->db->where('slug', $slug);
$result = $this->db->get();
if ($result->num_rows() == 0)
{
$x = str_replace('-', ' ', $slug);
$result = $this->SearchContributors($x);
}
?>
这返回了一个 MySQL 语法错误:
错误号:1064
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 'WHERE
firstname
LIKE '%paul%' ORlastname
LIKE '%paul%''附近使用正确的语法SELECT * WHERE
firstname
LIKE '%paul%' ORlastname
LIKE '%paul%'文件名:/www/htdocs/w00a94ee/c/controllers/contributors.php
行号:23
该函数在两种情况下都获得了相同的字符串paul
,那么为什么它不起作用呢?
//编辑
function __construct()
{
parent::__construct();
$this->load->database('databasename');
$this->db->from('tablename');
}