在查询中使用变量时MySQL查询无效

时间:2012-08-03 00:00:24

标签: php sql wordpress

我遇到了一个奇怪的问题,我的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"

1 个答案:

答案 0 :(得分:3)

您发布了var_dumping $ current album的结果:

  

string(28)" Raw&未切割:Mixtape"

" Raw&未切割:Mixtape"只有24个字符 - 告诉我的是你的变量实际上包含这个:

Raw & Uncut: The Mixtape

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