Php 在MySQL中搜索单个字符串

Php 在MySQL中搜索单个字符串,php,jquery,mysql,json,search,Php,Jquery,Mysql,Json,Search,我制作了一个私有消息系统,创建了一个php搜索页面,我使用JQuery将一个变量从keyUp上的文本字段传递到一个名为USearch.php或Username search的php文件。这是我的密码: <?php $Connect = new mysqli("localhost", "root", "", "Data"); $Val = $_POST['Val']; if($Val) { $Search = 'SELECT * FROM Users WHERE '; $Term = ex

我制作了一个私有消息系统,创建了一个php搜索页面,我使用JQuery将一个变量从keyUp上的文本字段传递到一个名为USearch.php或Username search的php文件。这是我的密码:

<?php
$Connect = new mysqli("localhost", "root", "", "Data");
$Val = $_POST['Val'];

if($Val)
{
$Search = 'SELECT * FROM Users WHERE ';
$Term = explode(" ", $Val);

foreach($Term as $Key)
{
    $I = 0;
    $I++;
    if($I == 1)
    {
        $Search .= 'Username LIKE "'.$Key.'" LIMIT 0, 10 ';
    }
    else
    {
        $Search .= 'OR Username LIKE "'.$Key.'" LIMIT 0, 10 ';
    }
}

if($Result = $Connect->query($Search))
{
    while($Row = $Result->fetch_assoc())
    {
        $User = $Row['Username'];

        $USearch['S'] = $User;
    }
}
}
echo json_encode($USearch);
?>


如您所见,我的代码没有错误,我的问题是我在数据库中搜索用户,这意味着我在搜索1个单词或字符串,通过使用此PHP代码,我必须键入函数返回值的确切用户名。我的真正意图是搜索字符串并根据我的输入字符串返回所有相似的用户名。

就像Jon说的那样-您希望在希望SQL具有通配符的地方使用
%

如果你想要所有的值,其中的名称是像马特你会做的

WHERE name LIKE '%matt%'

正如Jon所说,您希望在希望SQL具有通配符的地方使用
%

如果你想要所有的值,其中的名称是像马特你会做的

WHERE name LIKE '%matt%'

使用
%
在SQL中希望它是开放式的地方。阅读:另外,查看准备好的语句,您当前正面临SQL攻击。谢谢,它成功了!现在我将开始使用准备好的语句。好吧,你说你的代码没有错误是错误的。您可能需要查看foreach循环。并尝试在$key之间添加%。不客气@josephcaracuel
foreach
循环可能只有一次迭代,除非用户名可以有空格,这意味着它可能应该被删除,并成为一个可以准备的语句。但实际上,回答问题时不必粗鲁——从语法上讲,代码是正确的,没有错误。@Jon谢谢你让我知道。在SQL中希望开放的地方使用
%
。阅读:另外,查看准备好的语句,您当前正面临SQL攻击。谢谢,它成功了!现在我将开始使用准备好的语句。好吧,你说你的代码没有错误是错误的。您可能需要查看foreach循环。并尝试在$key之间添加%。不客气@josephcaracuel
foreach
循环可能只有一次迭代,除非用户名可以有空格,这意味着它可能应该被删除,并成为一个可以准备的语句。但实际上,回答问题时不必粗鲁——从语法上讲,代码是正确的,没有错误。@Jon谢谢你让我知道。