为什么结果返回为空?怎么了?如果我直接使用phpmyadmin进行咨询,结果是正确的。
<?php $postid = get_the_ID(); ?>
<?php
$get_thumb = $wpdb->get_var
( "SELECT meta_value FROM `wp_postmeta` WHERE `post_id` = $postid AND `meta_key` = '_wp_attached_file'" );
echo "<p>Thumb URL: {$get_thumb}</p>";
?>
答案 0 :(得分:0)
我建议使用$ wpdb-&gt; prepare()语句来确保正确生成SQL查询并在查询中正确设置$ get_thumb变量。
$postid = get_the_ID();
$get_thumb = $wpdb->get_var($wpdb->prepare(
"SELECT meta_value FROM `wp_postmeta` WHERE `post_id` = %s AND `meta_key` = '_wp_attached_file'",$postid));
echo "<p>Thumb URL: {$get_thumb}</p>";
同样,您可以始终记录prepare()生成的SQL字符串,以确保它符合您的期望。有关更多示例,请参阅https://codex.wordpress.org/Class_Reference/wpdb#Examples。
答案 1 :(得分:0)
我认为您的语法有些麻烦,因此修改了原始查询。
<?php
$get_thumb = $wpdb->get_var(
"
SELECT meta_value
FROM wp_postmeta
WHERE post_id = " . $postid . " AND meta_key = _wp_attached_file
"
);
echo "<p>Thumb URL: {$get_thumb}</p>";
?>
我确保PHP在查询中正确回显 - 我不确定这是否是您遇到的问题。
我也推荐准备好的查询。这是我认为正确的语法(我发现通过将它们放在$ query_arg_array中来准备项目是有帮助的)。请参阅https://codex.wordpress.org/Class_Reference/wpdb。
$postid = get_the_ID();
$query_arg_array = [$postid];
$get_thumb = $wpdb->get_var($wpdb->prepare(
"
SELECT meta_value
FROM wp_postmeta
WHERE post_id = %d AND meta_key = _wp_attached_file
",
$query_arg_array
));
echo "<p>Thumb URL: {$get_thumb}</p>";
如果准备好的查询无效,请尝试直接将$postid
作为参数而不是$query_arg_array
。
记住SQL是超级敏感的,所以即使是额外的空间也会丢失你的查询。