我需要一些帮助写一个MySQL查询。它需要查看所有记录,然后在字母-数字范围内按首字母排序(例如数字&然后在$results中只返回前15个(按字母数字顺序)
要搜索的字段是'name'
简单的结果显示所有(我认为15限制是正确的)-我如何修改它?
$results = DB::query("SELECT * FROM Mytable ORDER BY ? DESC LIMIT 15");
For Alpha Range:
$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");
get: ERROR: SQL语法错误;查看与MySQL服务器版本对应的手册,以获取使用near ') LIMIT 15'的正确语法
我做错了什么-试图列出1 -3,然后A-B。
Update2:与以上更正的查询一致,我有一个简单的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>
这样做-
$results = DB::query("SELECT * FROM Mytable ORDER BY name DESC LIMIT 15");
你可能不应该有一个名为'name'的列。这些类型的通用词通常是由你正在使用的系统保留的。
如果你需要更专业的东西,比如限制在字母表的某个部分,你的查询开始变得更加复杂。
SELECT substr(name, 1, 1) as Alphabet
FROM MyTable
ORDER BY (CASE name
WHEN 'D%' THEN 1
WHEN 'E%' THEN 2
WHEN 'F%' THEN 3
ELSE -1
END
)
LIMIT 15
马上做语法,你必须根据你的情况进行测试。