【发布时间】:2014-05-20 18:55:40
【问题描述】:
我需要一些帮助来编写 MySQL 查询。它需要查看所有记录,然后按字母数字范围内的第一个字母对它们进行排序(例如数字和 A-C,然后仅在 $results 中返回前 15 个(按字母数字顺序)
要搜索的字段是“姓名”
显示全部的简单结果(我认为 15 个限制是正确的)- 如何修改它?
$results = DB::query("SELECT * FROM Mytable ORDER BY ? DESC LIMIT 15");
对于 Alpha 范围:
$results = DB::query("SELECT substr(theme, 1, 1) as Alphabet
FROM gallery ORDER BY (CASE theme
WHEN '1%' THEN 1
WHEN '2%' THEN 2
WHEN '3%' THEN 3
WHEN 'A%' THEN 4
WHEN 'B%' THEN 5
ELSE -1
END) LIMIT 15");
得到:错误:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 ') LIMIT 15' 附近使用的正确语法
我做错了什么 - 尝试列出 1-3,然后是 A-B。
更新 2:在上面更正的查询中,我有一个简单的 foreach 来分配变量,然后在内容中有变量回显:
$x = 0
foreach ($results as $row) {
$x++;
if ($x == 1) { // first in query
$t1 = $row['theme'];
$d1 = $row['developer'];
$th1 = $row['thumb'];
}
...
}
什么都没有显示,在分配变量时我需要做些什么不同的事情吗?
更新 3:你是这个意思吗?仍然没有显示。
$x = 0
while ($row = mysql_fetch_array($results)) {
$x++;
if ($x == 1) { // first in query
$t1 = $row['theme'];
$d1 = $row['developer'];
$th1 = $row['thumb'];
}
...
}
回声前。在正文中:
<img src="<?php echo($th1); ?>" alt="<?php echo($t1); ?>" />
<span><p class="hname"><?php echo($t1); ?></p>
<p class="hdev"><?php echo($d1); ?></p></span>
【问题讨论】:
-
我忘记在原始查询中添加“END”。请参阅更新。
-
请不要在 cmets 中添加代码,编辑您的帖子并在其中添加该代码。
-
好的,将代码移到帖子中。
-
任何时候如果您有基于另一篇帖子的新问题,您应该提出一个新问题,并附上指向该帖子的链接。话虽如此(现在不要这样做)它应该是
while($row = mysql_fetch_array($result)) {... -
请参阅 Update3 问题。还是不显示。
标签: php mysql sql sql-order-by