如何将查询改进为按字符而不是字符串进行搜索


How can I improve my query to search by characters instead of a string?

我编写了一个PHP函数来执行提示性搜索。该函数使用一个查询对用户输入字符串进行搜索和匹配,然后在列表中列出建议的匹配。在这一点上,一切都按预期进行,但我希望改进它。

以下是我的代码:

function fillQueryData() {
    $dbName = $_SESSION ['dbN'];
    $link = mysqli_connect ( 'localhost', 'root', '', $dbName );
    if (! $link) {
        die ( "Connection failed" . mysqli_errno ( $link ) );
    }
    if (isset ( $_POST ['name'] )) {
        $name = trim ( $_POST ['name'] );
        $tblName = $_SESSION ['tblN'];
        $colqry = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbName' AND TABLE_NAME = '$tblName'";
        echo "<ul>";
        $col_names = mysqli_query ( $link, $colqry );
        while ( $col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC ) ) {
            $colName = $col ['COLUMN_NAME'];
            $tblQry = "SELECT * FROM $tblName WHERE $colName='$name'LIMIT 4";
            $query2 = mysqli_query ( $link, $tblQry );
            while ( $query3 = mysqli_fetch_array ( $query2 ) ) {
                ?>
<li onclick='fill( "<?php echo $query3 [$colName]; ?>") '><?php echo $query3 [$colName]; ?>   </li> 

我的问题是如何改进我的查询,使搜索可以按字符串中的字符执行,而不是只使用完整的字符串。例如,现在为了得到一个有效的匹配,我必须搜索完整的单词。我想在打字时得到建议,比如这个单词等。

查询

"SELECT * FROM $tblName WHERE $colName='$name'"

认为应该是

"SELECT * FROM $tblName WHERE $colName LIKE '$name%'"

但我想知道这是否会表现得足够好。除非数据量太大,否则最好将所有名称放入JSON数组中,并在用户键入。。。