- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在网上和 Stackoverflow 上搜索了这个问题的答案。似乎没有任何帮助。这应该是一个非常简单的函数。除了一个名为 level 的字段外,我有多个内容相同的记录。我想找到 level 中 int 值最高的记录。一个例子是我有多个记录具有相同的用户 ID 和电子邮件,但第一个记录从级别 1 开始,下一个可能是级别 2,然后下一个可能再次是级别 1。我想找到 level = 2 的记录。我的代码非常简单。
$LoginRS__query=sprintf("SELECT userid, email, level FROM orders WHERE userid=%s AND email=%s ORDER BY level DESC LIMIT 1", GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
对于某些人来说,这可以正常工作,返回级别为 2、3、8、9 等的记录。对于其他人,它只会返回 level = 1 的记录。字段级别是 int 长度 1。我正在运行 php 版本 5.3.28 和 MySQL 5.5.36
有什么想法吗?和大多数人一样,我很匆忙。谢谢...
我没有意识到 level 是一个保留字。直到现在,我一直在使用相同的表定义并使用级别编写其他脚本,没有任何问题。我正在检查错误,但没有返回任何错误。检查结果时 foreach ($row_LoginRS as $key=>$val) echo $键。 ": ".$val。 “
”;我通常得到:用户名:9999邮箱:email@email.com级别:1(或 2 或 3)。
这看起来是正确的。
我试着按照建议用刻度线括起来 - SELECT userid, email, level
... 和/或/两者 ORDER BY 'level'它返回:用户名:9999邮箱:email@email.com等级:等级
我的原始查询看起来是正确的:
string(120) "
SELECT userid, email, level FROM orders WHERE userid='9999' AND email='email@email.com' ORDER BY level DESC LIMIT 1
"
当使用 ticks 时,我得到:
string(120) "
SELECT userid, email, 'level' FROM orders WHERE userid='9999' AND email='email@email.com' ORDER BY 'level' DESC LIMIT 1
"
我不确定 MySQL 客户端问题。 phpinfo返回:事件持久链接 0
活跃链接 0
客户端 API 版本 5.5.36
MYSQL_MODULE_TYPE 外部
MYSQL_SOCKET/var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib64 -lmysqlclient
最佳答案
您没有检查错误。
level
是一个 MySQL 关键字它需要特别注意,因此要么将其重命名为保留字以外的名称,要么在其周围打勾:
SELECT userid, email, `level` ...
使用与您连接时相同的 API 检查查询中的错误,这对我们来说是未知的。
你确实标记为 mysql,但是 MySQL 在 PHP 环境下有 3 个不同的 API,不算 MSSQL。
编辑:
I tried enclosing in ticks as suggested
SELECT userid, email, `level` ... and/or/both ORDER BY 'level'
^ tick ^ quote
and it returns: userid: 9999 email: email@email.com level: level
和...
My original query looks correct: string(120) "SELECT userid, email, level FROM orders WHERE userid='9999' AND email='email@email.com' ORDER BY level DESC LIMIT 1" and when using ticks I get: string(120) "SELECT userid, email, 'level' FROM orders WHERE userid='9999' AND email='email@email.com' ORDER BY 'level' DESC LIMIT 1"
ORDER BY 'level'
被视为字符串文字,而不是列。这也需要用蜱包裹。将您的查询更改为:
"SELECT userid, email, `level` FROM orders
WHERE userid='9999'
AND email='email@email.com'
ORDER BY `level` DESC LIMIT 1"
添加error reporting到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
I'm not sure about the MySQL client question.
我们需要知道您是 mysql_
、mysqli_
还是要连接的 PDO。
在任何一种情况下,检查查询是否有错误。从以下列表中选择:
"No errors"
检查错误的示例查询:
mysql_
$result = mysql_query($query, $con);
if ( !$result ) {
trigger_error('query failed', E_USER_ERROR);
}
也 or die(mysql_error($con))
到 mysql_query()
或mysqli_
$result = mysqli_query($con, $query);
if (!$result)
{
throw new Exception(mysqli_error($con));
}
else{ echo "Success."; }
or die(mysqli_error($con))
到 mysqli_query()
或 PDO
error_reporting(E_ALL);
ini_set('display_errors', 1);
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
$e->getMessage(); for the real error
}
关于PHP MySQL ORDER BY level DESC LIMIT 1 不适用于所有搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000983/
好吧,我对我的页面发生的事情有点困惑。我在底部有页码, table 上摆满了 23 种不同的元素。 每个页面应一次显示 5 个项目。我显示的页面发送了一个带有 pagenumber = 不管怎样的 g
几周前我开始学习 Ada。我知道 limited 在某些情况下声明了一个有限类型,不允许复制对象 来自 Ada Reference Manual 2012 7.5 1/2 A limited type
我想按 DESC 选择日期并限制为最后 3 个,然后我需要基本上翻转最后 3 个结果,以便它们按 ASC 排序 任何帮助将不胜感激,我正在使用 postgresql 最佳答案 SELECT * FRO
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
我正在尝试访问按“日期”键排序的表中恒定数量的最新文档。请注意,不幸的是,日期是被实现的(不是由我......),使得该值设置为字符串,例如“2014-01-14”,或者有时“2014-01-14 2
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我必须对我的数据应用分页。我通过复杂的连接查询获取数据,没有任何子查询,只有简单的连接。 假设这个查询[这是一个非常简单的查询,我有一个比这个复杂的查询] SELECT states.state
我经常制作条形图,并将条形图的值额外包含为注释 (geom_text)。通常,我更喜欢这些值右对齐(与将标签放在条形顶部相反)。在绘制多面条形图时,我将这些值放在每个组中的最大值(我之前计算过)加上我
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
我正在使用 PostgreSQL 9.3。这应该在具有 100,000 多行的任何表上重现。 EXPLAIN ANALYZE 显示使用 LIMIT 2 扫描了更多行,但我不明白为什么。 限制 1: E
我正在尝试找出是否可以在 PHP 中全局设置和取消设置 MySQL 结果的默认限制。 一些可能看起来像的伪代码: $pdo->prepare('SELECT * FROM example'); $pd
我有下面的代码片段表 在这里我必须对投票前 3 个值求和。 假设 product_id 3030 vote 列的总和为 8.1 和 3671 总和 是 5.2 在这里,我必须获得前 3 个 produ
我正在使用全文搜索来提取行。 我根据分数 (ORDER BY SCORE) 对行进行排序,然后在前 20 行 (LIMIT 20) 中,我想对结果集进行兰德 (RAND)。 因此,对于任何特定的搜索词
帮助创建搜索条件 SELECT * FROM mlt_adr_city WHERE name LIKE "Text%" AND region_id = 59 AND id <> 0 IF (name
MySQL 查询示例: SELECT message_id, message_text FROM messages LIMIT 0 , 30 我得到的这个提示是错误的: HIN
我注意到如果我将查询限制为 1 个而不是 5 个,速度会急剧下降。 SELECT he. * FROM homematic_events he WHERE he.homematic_devices_i
我需要从我的表中获取最后一个 ID,以便我可以在另一个函数中使用它我在我的存储库中创建了这个函数,但我没有工作,它显示了一个错误: [Syntax Error] line 0, col 60: Err
我是一名优秀的程序员,十分优秀!