- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 HTML 选择输入,启用了多项选择,我正在查看选定的选项并尝试处理我的 SQL ... 但是,我收到来自 SQL 的警告,告诉我如果我的选择语句是的,我应该使用“SET SQL_BIG_SELECTS = 1”,因为 JOIN 超出了限制?
这是我的查询:
"
SELECT wposts.*, wpostmeta.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2, $wpdb->postmeta wpostmeta3
WHERE wposts.ID = wpostmeta.post_id
AND wposts.ID = wpostmeta2.post_id
AND wposts.ID = wpostmeta3.post_id
AND wpostmeta.meta_key = 'listing_subtype'
AND wpostmeta.meta_value = '$search_home_type'
AND wpostmeta2.meta_key = 'map_area'
AND ";
$count = 0;
foreach ($params['search_map_area'] as $map_area) :
if ( $count != 0 ) :
$querystr .= "OR ";
endif;
$querystr .= "wpostmeta2.meta_value = '$map_area' ";
$count++;
endforeach;
$querystr .= "AND wpostmeta3.meta_key = 'price_current'
AND wpostmeta3.meta_value BETWEEN $search_price_min AND $search_price_max
AND wposts.post_status = 'publish'
AND wposts.post_type = 'vreb_property'
ORDER BY wposts.post_date DESC
LIMIT 0, 20
";
有没有更好的查询方式?这是多个 OR wpostmeta2.meta_value = '$map_area'
似乎导致我的脚本超时......
最佳答案
FROM $wpdb->posts wposts,
INNER JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id
INNER JOIN $wpdb->postmeta wpostmeta2 ON wposts.ID = wpostmeta2.post_id
INNER JOIN $wpdb->postmeta wpostmeta3 ON wposts.ID = wpostmeta3.post_id
WHERE ...
使用 JOIN ... ON 可能比在 WHERE 类中拥有所有 ID 关系更可取。
你真的应该使用参数化查询,这样你就不会向 SQL 注入(inject)敞开心扉,因为你似乎没有正确地转义你使用的任何字符串。 http://www.php.net/manual/en/mysqli.real-escape-string.php
但是,如果你在开发私有(private)/内部应用程序和安全性,那该死的......
$temp = "'" . implode("','", $params['search_map_area']) . "'";
if($temp != "''")
$querystr .= "wpostmeta2.meta_value IN ($temp)";
else
$querystr .= " 1=1 ";
使用 IN 关键字而不是多个“OR col = 'val'”也是首选。
关于php - SQL_BIG_SELECTS,优化我的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861695/
嘿,我一直在研究 SQL_BIG_SELECTS,但到目前为止 MySQL 文档并没有什么帮助。我正在寻找一些关于防止出现如下错误的见解。 ERROR 1104: The SELECT would e
嘿,我一直在研究 SQL_BIG_SELECTS,但到目前为止,MySQL 文档一直没有帮助。我正在寻找一些关于防止出现以下错误的见解。 ERROR 1104: The SELECT would ex
我正在使用 HTML 选择输入,启用了多项选择,我正在查看选定的选项并尝试处理我的 SQL ... 但是,我收到来自 SQL 的警告,告诉我如果我的选择语句是的,我应该使用“SET SQL_BIG_S
更新 现在我可以通过删除 ORDER BY 使其工作...不确定这是正确的做法但必须这样做。 首先,这是我要加入数据库的所有表中的所有字段(列) 突出显示的字段是我要选择的字段。 所以,我写了 sql
我有一个很大的 SQL 查询,需要以某种方式简化它,感谢任何帮助。 我收到此错误:WordPress 数据库错误:[SELECT 将检查超过 MAX_JOIN_SIZE 行;检查您的 WHERE 并使
我在执行查询时遇到错误。 SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT would examine more t
我有一个使用事务访问 MySQL 数据库的 Perl 脚本。我需要在查询中设置 SET SQL_BIG_SELECTS=1,但不确定如何设置该选项。 如果我直接查询MySQL,我可以使用分号。即“SE
我有两个 mysql 表: 表 1(80K+ 产品): _products product_id status ean category 表 2:(
当我尝试使用 6 个连接执行数据库查询时,我收到以下错误消息: SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT w
我的查询遇到了问题...... SELECT keywords.keyword, keywords.keyid, sources.s_title, sources.s_disc, sources.s_
Exception -> string(69) "SQLSTATE[HY000]: General error: 1193 Unknown system variable 'OPTION'" Exce
在 ZF2 (Zend Framework 2) 中运行语句之前如何执行查询(例如 SET SQL_BIG_SELECTS=1)? 我已经尝试在“driver_options”中设置它,但没有成功。
我是一名优秀的程序员,十分优秀!