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

时间:2012-06-07 09:20:52

标签: php mysql

我目前有这张桌子。

姓名

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

现在我打算做的是,如果有人在我的表单中输入类似亨利的东西,它会在我的数据库中搜索以“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?
        }
    }
}

现在我确信这不是最好的方法。是否可以在查询中?我真的不确定在哪里寻找合理的答案。

1 个答案:

答案 0 :(得分:0)

变化     mysql_query(“SELECT name FROM names”);

要     mysql_query(“SELECT name FROM names WHERE NAME ='”。$ entered_name。“'”);

并检查您有多个答案。

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

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

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

此外,不要尝试在代码中执行数据库可以轻松完成的操作(例如搜索字符)。你的代码几乎总是会比搜索数据库更糟糕,把它留给数据库。