desc words;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| word | varchar(255) | NO | | NULL | |
+---------+--------------+------+-----+---------+----------------+
我还有一个带有三个输入字段的HTML表单,用户应该输入三个字母:
<form action='load.PHP' method='post'>
<input type='text' name='first_letter'>
<input type='text' name='second_letter'>
<input type='text' name='third_letter'>
<input type='submit' name='submit'>
</form>
是否可以创建一个MySQL查询来按照外观的顺序获取包含三个字母的单词?
例如,如果我们有话
adams
damn
mad
…并且用户提交字母“a”,“d”,“m”它应该只给出结果
adams
因为第一个提交的信件是“a”,第二个提交的信件是在“a”之后等等(即使其间有其他字母).
或者使用PHP对单词进行排序更容易?如果是这样,怎么样?我是初学程序员.
解决方法:
好吧,无论如何都不会有效率,但以下应该完成工作:
$string = '%' . implode('%', $letters) . '%';
$query = "SELECT word FROM words WHERE word LIKE '$string'";
无论字母之间是否有任何内容,只要它们以正确的顺序出现,这都将起作用.它还允许指定不同数量的字母.
编辑:
还需要为查询构建$letters.具体到这个例子,它可以像这样构建:
$vars = array('first_letter', 'second_letter', 'third_letter');
foreach($vars as $var){
if($_POST[$var]){
$letters[] = $_POST[$var];
}
}
如果POST变量名称更改为letters [],则可以将过程简化为:
foreach($_POST['letters'] as $letter){
if($letter){
$letters[] = $letter;
}
}
所有进入此数据的数据也应该被验证/转义,但这超出了本问题的范围.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。