Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将输入的名称与以前存储的名称配对_Php_Mysql - Fatal编程技术网

Php 将输入的名称与以前存储的名称配对

Php 将输入的名称与以前存储的名称配对,php,mysql,Php,Mysql,我现在有这张桌子 名称 两个字段,ID和名称。示例数据为1 | Harry 现在我计划做的是,如果有人在我的表单中输入类似于Henry的内容,它将搜索我的数据库中以“H”开头的结果,然后如果他们是多个结果,它将查看是否有任何结果是“他”,如果不是,它将从“H”返回到以前的结果 我唯一能想到的就是 $inputted_name = "Henry"; $query = mysql_query("SELECT `name` FROM `names`"); while($row = mysql_fetc

我现在有这张桌子

名称

两个字段,ID和名称。示例数据为1 | Harry

现在我计划做的是,如果有人在我的表单中输入类似于Henry的内容,它将搜索我的数据库中以“H”开头的结果,然后如果他们是多个结果,它将查看是否有任何结果是“他”,如果不是,它将从“H”返回到以前的结果

我唯一能想到的就是

$inputted_name = "Henry";
$query = mysql_query("SELECT `name` FROM `names`");
while($row = mysql_fetch_array($query)){
    $stored_name = $row['name'];
    if($stored_name[0] == $inputted_name[0]){
        if($stored_name[1] == $inputted_name[1]){
            $result = $stored_name;
            break;
        }   else   {
            // continue looking but then return the first result that matched one letter?
        }
    }
}
现在我确信这不是最好的方法。在查询中可能吗?我真的不知道该从哪里找到一个合理的答案。

改变 mysql_查询(“从
名称
中选择
名称

到 mysql_查询(“从
名称
中选择
名称
,其中名称=”“$inputed_名称”。”)

并检查您是否有多个答案

注意:如果您的名字来自非受控源(如网页),那么这是一种不好的方法,因为它允许SQL注入,然后您需要参数,但对于您的示例来说,它可以工作

编辑:现在我再次阅读了您的问题,是的,您需要参数或转义,例如:

$name = mysql_real_escape_string($inputted_name);
mysql_query("SELECT `name` FROM `names` WHERE NAME='".$=name."'");

此外,不要尝试在代码中执行数据库可以轻松执行的操作(例如搜索字符)。您的代码在执行搜索时几乎总是比数据库差,请将其留给数据库。

但它不会是确切的名称。我希望它与第一个字母匹配。e、 g代表亨利,搜索他,如果没有结果,搜索H。对不起,我不明白,你希望它总是匹配前两个字母,如果不匹配第一个?因此,如果您输入“Paul”,它将首先匹配“Pamela”?确切地说,搜索要匹配的前两个字母,如果没有结果,则只搜索第一个字母。这取决于您的数据。如果你只有10-100个名字,只需搜索第一个字母,然后在循环中查找,否则,只需将你的名字缩减为两个字符,用sql搜索“SELECT
name
FROM
names
WHERE name LIKE”。$left\u of_name.“%”这些名字大约是400个。还有,像这样的名字不意味着它将匹配“so”和“jason”吗?我只是试着匹配前两个字母。