在插件中使用$wpdb,它会返回什么类型的数据?

时间:2014-08-28 作者:stijn.aerts

我有以下代码:

<?php
$q = intval($_GET[\'q\']);

global $wpdb;


$myoption =  get_option( \'fixformdata_options\' );
$myoptionValue = maybe_unserialize( $myoption );    

$result2 = $wpdb->get_row
(
    $wpdb->prepare
    (
        "SELECT * FROM {$myoptionValue[\'tablename\']} WHERE personeelsNummer = %d", $q
    )
);

if($result2) {
  echo  json_encode( $result2 );
}

?>
我得到以下错误:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
var parsed = JSON.parse(response);
返回的数据似乎有问题,但我不知道是什么。。。

非常感谢您的帮助!

1 个回复
SO网友:TheDeadMedic

查看codex on wpdb. 就你而言,get_row 将结果集的第一行作为对象返回。没有必要mysqli_* 使用时的功能$wpdb.

if ( $result2 )
    echo json_encode( $result2 );
还有一个SQL injection - 使用prepare 方法:

$wpdb->get_row(
    $wpdb->prepare(
        "SELECT * FROM {$myoptionValue[\'tablename\']} WHERE personeelsNummer = %s",
        $q
    )
);
如果personeelsNummer 是整数,请使用占位符%d 而不是%s

结束

相关推荐

在大多数情况下,$wpdb->GET_RESULTS比WP_QUERY快,这是真的吗?

在我的主页上,我有一个部分,我必须显示最后五篇特色文章,其中特色文章只是一篇带有自定义字段is\\u featured设置为1的文章。我用两种不同类型的代码实现了我想要的:使用wpdb<?php $featuredPosts = $wpdb->get_results(\" SELECT ID, post_title FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON($