我有一个查询,我正在运行以返回一个数据透视表,它将wp_usermeta数据分类到列而不是带有键的行。当我直接从我的MySQL命令行运行它时,没有问题。它给我一行包含所有数据和正确的列标题。
$wpdb->get_results($wpdb->prepare(
"SET SESSION group_concat_max_len = 1000000;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(meta_key = ''',
meta_key,
''', meta_value, NULL)) AS ',
LOWER(REPLACE(meta_key, 'babud_', '))
)
) INTO @sql
FROM wp_usermeta WHERE user_id = %d AND meta_key LIKE 'babud_%';
SET @sql = CONCAT('SELECT ', @sql, ' FROM wp_usermeta WHERE user_id = %d GROUP BY user_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;", $user_id, $user_id
));
然而,当我通过Wordpress运行时,我似乎无法让它返回任何内容。
我怀疑这是我逃避单引号的方式,但我不确定。
有人说MySQL中的单引号应该被转义''一个单引号旁边的另一个。
其他人说使用\'还有人说要用\\'然后双重逃脱它。
尝试了以上所有内容后,我感到很茫然。
我应该如何正确地转义此查询,以便它从控制台返回相同的数据?