php - PHP 中的查询结果为空,但是当我从 PHPMyAdmin 运行 SQL 查询时,它可以工作

标签 php mysql wordpress

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/

相关文章:

mysql - MySQL-使用分组依据(数据透视表)的行到列(动态)

wordpress - SEO帮助| Wordpress

php - 将输入表单的值添加到当前字段值并在 PHP 中更新字段

php - 使用 PHP Form 从 txt 文件加载数据

php - 在 PHP 中的一个循环中从不同的行中多次获取

mysql - 通过循环类创建 select_tag 的最佳方法

php - 为什么我必须使用 mb_convert_encoding($name ,'ISO-8859-15' ,'utf-8' ) 来显示重音字符?

javascript - 如何控制WordPress中视频播放器的大小

php - MySQL 查询 WordPress 日事件

php - 从 Orddermotion ERP 上传 Magento 产品