PHP(wordpress)中的查询结果为空,但是当我从 PHPMyAdmin 运行 SQL 查询时,它可以工作! 这是代码的一部分,它返回空数组
<?php
global $wpdb;
$from = $_POST['amount'];
$to = $_POST['amount1'];
$query = "SELECT post_content
FROM `wp_postmeta`
INNER JOIN `wp_posts` ON wp_posts.ID = wp_postmeta.post_id
WHERE meta_key = 'product_price'
AND meta_value > '$from'
AND meta_value < '$to'";
$results = $wpdb->get_results($query);;
var_dump($results); // empty array
?>
谁能解释一下我的问题吗?谢谢!
最佳答案
我认为其原因是有关meta_value 列的子句的输入被视为字符串。您需要将它们视为数字。
看一下 Wordpress 中的“query_posts”函数。
$args = array(
'meta_query'=> array(
array(
'key' => 'product_price',
'compare' => '>',
'value' => $from,
'type' => 'numeric'
),
array(
'key' => 'product_price',
'compare' => '<',
'value' => $to,
'type' => 'numeric'
)
)
'posts_per_page' => 100
) );
query_posts( $args );
或者,将您的输入视为数字,而不是字符串。在原始查询中删除它们周围的单引号。
global $wpdb;
$from = $_POST['amount'];
$to = $_POST['amount1'];
$query = "SELECT post_content
FROM `wp_postmeta`
INNER JOIN `wp_posts` ON wp_posts.ID = wp_postmeta.post_id
WHERE meta_key = 'product_price'
AND meta_value > $from
AND meta_value < $to";
$results = $wpdb->get_results($query);
var_dump($results);
我仍然强烈建议您养成清理输入的习惯。
第一个解决方案的另一个好处是,query_posts 函数将根据提供的输入类型自动清理您的输入。
引用文献:
关于php - PHP 中的查询结果为空,但是当我从 PHPMyAdmin 运行 SQL 查询时,它可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954310/