【发布时间】: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."%'