我已经阅读了一些文档和其他人关于我的wpdb问题的类似问题,但我看到了非常不同的答案,所以我有点困惑。
我想要做的是从(最终)大约250页的Wordpress中获取定制的元数据。wpdb请求将是header.php格式的,代码必须构建一个数组,该数组将用作Google Map的输入。自定义元字段被称为_ytF_f_name、_ytF_f_lat和_ytF_f_lng (不要问我为什么:-)。
因此,最终的输出应该是:[name1,lat1,lng1], [name2,lat2,lng2],等。
我为Wordpress使用了一个定制表,它的前缀是yt_ (在wp-config.php中定义)。自定义元是使用WPAlchemy构建的。我已经检查了数据库,元数据就在那里(在postmeta表中)。
在组合了几个东西之后,我现在得到的是:
<?php
global $wpdb;
$querystr = "SELECT ".$wpdb->prefix."postmeta._ytF_f_name, ".$wpdb->prefix."postmeta._ytF_f_lat, ".$wpdb->prefix."postmeta._ytF_f_lng FROM ".$wpdb->prefix."postmeta WHERE post_type='page'";
$vars = $wpdb->get_results($querystr);
foreach ($vars as $var) {
echo '[' . $var->_ytF_f_name . ',' . $var->_ytF_f_lat . ',' . $var->_ytF_f_lat . '],';
}
?>输出为空,那么我在这里遗漏了什么?
与此相关的另一个问题是:我读到了一些关于“prepare”以防止sql注入的内容。
正确使用prepare类来更改
$vars = $wpdb->get_results($querystr);进入:
$vars = $wpdb->get_results($wpdb->prepare($querystr));发布于 2013-02-10 21:44:41
关于你的问题,我没有看到错误,所以在你的查询(文档here)之前,用$wpdb->show_errors();验证你是否有SQL错误。
prepare方法可以防止SQL注入。正如doc所说,它的工作原理如下:
$wpdb->query(
$wpdb->prepare(
"INSERT INTO ___
( attr1, attr2 )
VALUES ( %s, %d )",
$valueOfAttr1,
$valueOfAttr2
)
);当然,您必须根据需要更改类型和值。
https://stackoverflow.com/questions/14798307
复制相似问题