php - 将(标题 LIKE 'A%' )更改为 B 或 C 等(重写)

标签 php sql sql-like

这是对一个已关闭的问题的重写,因为它太模糊而且我没有正确插入代码。希望这更有意义。

我有一个包含“标题”和“作者”的大型 SQL 数据库。我已经使用 PHP 设置了一个查询,该查询将仅选择以 A 开头的标题 - (title LIKE 'A%') - 在一页上:

$result = mysql_query("SELECT * FROM table WHERE (title LIKE 'A%') ORDER BY title ASC");

//fetch the data from the database
while ($row = mysql_fetch_array($result)) {
$DirPath = $row{'filename'};
//To get the innermost dir 'display just mp3'
$InnermostDir = basename(rtrim($DirPath, '/'));

echo "<tr><td align='justify'>";
echo $row{'title'} ;
echo "</td><td align='center'>";
echo $row{'author'} ;
echo "</td><td align='center'>";
echo $row{'publisher'} ;
echo "</td><td align='center'>";
echo $row{'pages'} ;
echo "</td><td align='center'>";
echo $row{'year'} ;
echo "</td><td align='center'>";
echo $row{'type'} ;
echo "</td><td align='center'>";
echo $row{'genre'} ;
echo "</td><td align='center'>";
echo $row{'location'} ;
echo "</td><td align='center'>";
echo $row{'id'} ;
echo "</td><td align='center'>";
echo $row{'shortauthor'} ;
echo "</td></tr>";
}
?>
</table>
<?php
//close the connection
mysql_close($dbhandle);
?>

http://sanctuary-westminster.org/library/epa.php

目前我只是简单地复制了第 25 页,唯一的区别是字母发生了变化(并且页面标题发生了变化以反射(reflect)字母),然后只使用了一个简单的 a href="epb.php “把他们连在一起。所以在 epb.php 页面上:

$result = mysql_query("SELECT * FROM table WHERE (title LIKE 'B%') ORDER BY title ASC");

http://sanctuary-westminster.org/library/epb.php

这是一个非常冗长且没有吸引力的方法,任何更改都需要更改所有页面。我试过使用 $letter 而不是链接,并将 LIKE 'A%' 改为 LIKE '$letter%':

$result = mysql_query("SELECT * FROM table WHERE (title LIKE 'row{'letter'}%') ORDER BY title ASC");

但是失败了;它没有给出任何错误消息,查询没有发生,因为输入值不正确,所以没有返回任何内容。 希望这更有意义,并为之前的事情道歉。

(我也研究过使用下拉菜单的方法,其中“提交”命令存储从选项中选择的字母,然后在查询中使用它,但是当我查看下拉菜单和 SQL 时,唯一的例子似乎与使用表格填充菜单相关,而不是使用表格创建查询。不确定这样是否会更好)

最佳答案

有一个页面,标题为 lib.php 并向其传递一个参数,如 lib.php?letter=A

将您的代码更改为:

$result = mysql_query("SELECT * FROM table WHERE (title LIKE '" . mysql_real_escape_string($_GET['letter']) . "%') ORDER BY title ASC");

现在同一个文件,lib.php,可以生成之前的所有页面。

关于php - 将(标题 LIKE 'A%' )更改为 B 或 C 等(重写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593802/

相关文章:

linq 像空字符串

mysql - 在 mysql 中使用 AES_ENCRYPT 和 AES_DECRYPT 搜索 LIKE

php - 从多个选择列表(html 格式)向 mysql 数据库插入数据

sql - 根据条件和相同的主键将金额从一个表转移到另一个表中

php - 为 PHP 配置 Notepad++ DBGP 插件和 XDebug

Android sql事务性能

sql - 如何在MySQL中的另一个列计算中重用动态列?

PostgreSQL hstore : improve LIKE performance with index?

php - Ajax 调用 php 脚本返回 404 错误

php - 设置图像的宽度和高度