Php 将输入的名称与以前存储的名称配对
我现在有这张桌子 名称 两个字段,ID和名称。示例数据为1 | Harry 现在我计划做的是,如果有人在我的表单中输入类似于Henry的内容,它将搜索我的数据库中以“H”开头的结果,然后如果他们是多个结果,它将查看是否有任何结果是“他”,如果不是,它将从“H”返回到以前的结果 我唯一能想到的就是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
$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
FROMnames
WHERE name LIKE”。$left\u of_name.“%”这些名字大约是400个。还有,像这样的名字不意味着它将匹配“so”和“jason”吗?我只是试着匹配前两个字母。