如问题中所述,查询
$query = 'SELECT * FROM MYTABLE WHERE SEARCHFIELD LIKE "' . $searchText . '%"'
                                . 'OR SEARCHFIELD LIKE "% ' . $searchText . '%"'
适用于匹配SEARCHFIELD包含以(或等于)开头的单词的记录$searchText
关于性能,我已经在我的开发机器上进行了测试MBP 2,2 GHz i7 quad core:
在 4.000 条记录上搜索一个单词大约需要 40 毫秒。
记录通常被索引(没有全文)。
我有几千条记录,查询不经常运行,所以对我来说很好。
该解决方案可能不适用于其他环境。
为了使用上面的查询构建一个准备好的语句,我使用了这里描述的技术:
转义 MySQL 通配符
结果代码如下:
function like($s, $e)
{
    return str_replace(array($e, '_', '%'), array($e . $e, $e . '_', $e . '%'), $s);
}
/* ... */
/* create a prepared statement */
$stmt = $mysqli->prepare(
    'SELECT * FROM MYTABLE WHERE SEARCHFIELD LIKE ? ESCAPE "=" OR SEARCHFIELD LIKE ? ESCAPE "="'
); 
if( $stmt )
{
    /* escape the text */
    $escSearchText = like( $searchText, "=" );
    /* 'like' parameters */
    $like1 = $escSearchText . "%";
    $like2 = "%" . $escSearchText . "%";
    /* bind parameters for markers */
    $stmt->bind_param( "ss", $like1, $like2 );
/* ... */