如何改进我的查询以按字符而不是字符串进行搜索?
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 数组并在用户键入时从那里使用它们可能是一个想法...
我编写了一个 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 数组并在用户键入时从那里使用它们可能是一个想法...