我目前有这张桌子。
姓名
两个字段,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?
}
}
}
现在我确信这不是最好的方法。是否可以在查询中?我真的不确定在哪里寻找合理的答案。
答案 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."'");
此外,不要尝试在代码中执行数据库可以轻松完成的操作(例如搜索字符)。你的代码几乎总是会比搜索数据库更糟糕,把它留给数据库。