- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可能没有在此处查询中的最佳查询,如果有人可以教我更好的方法,我将不胜感激。
但是根据我所拥有的,我似乎无法弄清楚为什么 LIMIT 命令不起作用?
我将缩略图限制为 26 个,但我得到了 38 个?
很奇怪。
如果有帮助的话,我可以说画廊表有 7 个已发布的画廊,因此会有 7 个 id 来自那里,我希望下一个查询将循环遍历照片表并返回带有id 来 self 上面查询的 7 个画廊,对吗?
如果有人能理解的话,这就是我的代码..
<?php
// Check if gallery is published
$query1 = "SELECT id,status FROM gallery WHERE status=1";
$result1 = mysql_query($query1) or die(mysql_error());
while($row1 = mysql_fetch_array( $result1 )) {
$gid = $row1['id'];
// now get the photo file names based on the above published gallery ids
$query2 = "SELECT id,uid,gid,image,origimage FROM photo WHERE gid='$gid' LIMIT 20";
$result2 = mysql_query($query2) or die(mysql_error());
while($row2 = mysql_fetch_array( $result2 )) {
?>
<div style="float:left;">
<a class="featureGrid" href="public-photo-user.html?uid=<?php echo $row2['uid']; ?>&gid=<?php echo $row2['gid']; ?>&id=<?php echo $row2['id'];?>">
<img src="media/users/croppedthumbs/<?php echo $row2['uid']; ?>/<?php echo $row2['gid'] ?>/<?php echo $row2['image']; ?>" />
</a>
</div>
<?php }} ?>
感谢任何可以帮助阐明这一点或建议/教我一种更好的方法的人。
干杯。约翰
最佳答案
您正在执行多个查询,每个查询单独限制为 20 个。
相反,使用联接将查询合并为单个查询。它比循环多个查询更有效,并且您可以对组合结果进行限制:
SELECT photo.id, photo.uid, photo.gid, photo.image, photo.origimage
FROM photo JOIN gallery ON gallery.id=photo.gid
WHERE gallery.status=1
LIMIT 20
在将值放入查询字符串时,您还应该始终小心使用mysql_real_escape_string()
,否则您将遇到 SQL 注入(inject)安全漏洞。同样,输出到 HTML 页面的所有文本都必须使用 htmlspecialchars()
进行编码,以避免标记注入(inject),插入 URL 部分的数据应使用 rawurlencode()
进行编码>.
预计到达时间:
Can you link me to an example of mysql_real_escape_string combined with htmlspecialchars.
好吧,如果你还在这样做,那么:
$query2 = "SELECT id,uid,gid,image,origimage FROM photo WHERE gid='$gid' LIMIT 20";
需要对其中的 $gid
进行转义,否则值中的任何撇号(或可能的反斜杠)都会导致其爆炸。
$query2 = "SELECT id,uid,gid,image,origimage FROM photo WHERE gid='".mysql_real_escape_string($gid)."' LIMIT 20";
然后:
href="public-photo-user.html?uid=<?php echo $row2['uid']; ?>...
如果 uid
值包含双引号,则容易受到攻击,并且对于无法放入 URL 的其他各种字符也会失败。
也许您可以确保您的 ID 永远不会包含标点符号,但任何其他值都可能包含标点符号,因此每次将文本字符串插入另一个上下文(例如 SQL、HTML 或 URL)时,最好始终使用适当的编码。
不过,一直输入 mysql_real_escape_string
和 htmlspecialchars
有点乏味,所以我倾向于定义快捷函数,例如:
function m($str) { return "'".mysql_real_escape_string($str)."'"; }
function h($str) { echo htmlspecialchars($str); }
function u($str) { echo rawurlencode($str); }
可以这样使用:
$query2 = "SELECT id,uid,gid,image,origimage FROM photo WHERE gid=".m($gid)." LIMIT 20";
Hello, <?php h($name); ?>
<a class="featureGrid" href="public-photo-user.html?uid=<?php u($row2['uid']); ?>&gid=<?php u($row2['gid']); ?>&id=<?php u($row2['id']); ?>">
(另请注意,属性值中的 &
应转义为 &
,以保证 HTML 的有效性和可靠性。)
关于php - WHERE gid=$gid LIMIT 26 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5926969/
好吧,我对我的页面发生的事情有点困惑。我在底部有页码, 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
我是一名优秀的程序员,十分优秀!