【问题标题】:MySQL query not working when a variable is used Inside the query使用变量时,MySQL查询不起作用在查询内部
【发布时间】:2012-08-03 00:00:24
【问题描述】:

我遇到了一个奇怪的问题,我的 MySQL 查询适用于除一个特定数据条目之外的所有情况。

这是我的查询:

SELECT * FROM wp_songs WHERE album_name = '{$current_album}'

这个查询被输入到 Wordpress 的 $wpdb->get_results() 函数中。由于某种原因,它永远找不到这个特定的数据条目:“Raw & Uncut: The Mixtape”

但是,如果查询改为:

 SELECT * FROM wp_songs WHERE album_name = 'Raw & Uncut: The Mixtape'

发现数据没有问题。

运行 $wpdb->last_query 函数在两种情况下返回完全相同的行。

问题仅针对一个数据条目。我无法用其他数据条目复制问题。所有其他条目都适用于我的原始查询。

更多代码:

这不起作用:

 $current_album = "Raw & Uncut: The Mixtape";
 $songs = $wpdb->get_results("SELECT * FROM wp_songs WHERE album_name = '{$current_album}'")
if ( $songs ) { echo "Works"; }

这行得通:

  $songs = $wpdb->get_results("SELECT * FROM wp_songs WHERE album_name = 'Raw & Uncut: The Mixtape'");
  if ( $songs ) { echo "Works"; }

同样,它仅适用于特定的数据输入。其他所有条目都适用于这两个查询。

运行 var_dump($current_album) 返回:

string(28) "Raw & Uncut: The Mixtape"

【问题讨论】:

  • 请显示所有相关代码
  • 用不包含特殊字符的字符串试试这个结构。我认为“&”和“:”造成了问题。
  • 它适用于不包含特殊字符的字符串,但当我不使用变量时它也适用。
  • 我认为这就是 Panique 认为会发生的事情。这将表明 wordpress 扩展例程中存在错误。
  • 试试用like? SELECT * FROM wp_songs WHERE album_name LIKE '".$search."%'

标签: php sql wordpress


【解决方案1】:

您发布了 var_dumping $current 专辑的结果:

string(28) "Raw & Uncut: The Mixtape"

“Raw & Uncut: The Mixtape”只有 24 个字符 - 这告诉我您的变量实际上包含以下内容:

Raw & Uncut: The Mixtape

这与您在数据库中的内容不匹配。您可以通过在相册变量上运行 html_entity_decode() 来纠正它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2016-03-30
    • 2016-10-05
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多