我有一个问题,自昨天以来我一直试图解决。我试图在wordpress上通过$wpdb
传递SQL查询,但是当我尝试回显结果时,我一直得到一个空数组。
我尝试了print_r
和var_dump
,两者都给了我空值。如果有人可以提供帮助,我将不胜感激,因为我似乎无法对此事进行排序。
我也试过通过db前缀调用表但仍然没有成功。
以下是我一直在使用的代码
<?php
global $wpdb;
$results = $wpdb->get_results("SELECT CURRENT FROM upper_winds WHERE LVL=&level AND REGION=®ion AND VALID=&valid");
echo $results;
?>
P.S我也尝试过get_var
同样的问题。
由于
答案 0 :(得分:2)
我注意到你没有考虑wordpress数据库前缀,这可能就是你的结果没有出现的原因。您可以使用$wpdb->prefix
。
我建议您尝试以下代码:
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."upper_winds WHERE LVL = 'level' AND REGION = 'region' AND VALID = 'valid'");
echo $results;
我还想指出使用$wpdb->prepare
来防止SQL注入攻击非常重要。每次编写自己的SQL时,都需要使用$wpdb->prepare
。但是,当您使用$wpdb->insert
或$wpdb->update
等不需要编写任何SQL的方法时,则不需要使用$wpdb->prepare
,因为这些函数会处理SQL转义为了你。我不能在不知道哪些值是字符串以及哪些值是整数的情况下提供示例代码。
请参阅:http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
答案 1 :(得分:0)
你需要为你的表添加前缀,这可能是wp_等。
<?php
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM `wp_upper_winds`
WHERE `LVL`='$level'
AND `REGION`='$region'
AND `VALID`='$valid'
");
var_dump ($results);
?>
您正在寻找列中的字符串,但使用&amp;?
答案 2 :(得分:0)
感谢您的出色建议和意见。最终我开始工作了。
问题不仅出现在代码中,因为我多次更改代码以尝试找到解决方案。最终,主要问题被钉在了桌面上。在其中一个栏目中,我的数据类似于此类&#39; EU-VFR&#39;。显然$ wpdb没有用&#39; - &#39;来获取值。幸运的是,在你的帮助下,我意识到了一些调试。
以下是我现在所获得的http://howtoflyahelicopter.com/upper-winds-and-temp/
再次感谢:)