将MySQL PDO连接更改为WPDB连接

时间:2016-03-09 作者:mesqueeb

我有一个带有PHP脚本的自动填充搜索框,可以从DB中获取数据。它使用PDO连接,甚至可以与我的WordPress数据库完美配合,但由于我不确定PDO是如何工作的,我想用WordPress函数重写它。有人知道怎么做吗?

这是自动建议脚本:

if (isset($_GET[\'term\'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD."");
        $conn->exec("set names utf8");
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare(\'SELECT supplier_company FROM wp_teleapo_supplier\');
        $stmt->execute(array(\'term\' => \'%\'.$_GET[\'term\'].\'%\'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row[\'supplier_company\'];
        }

    } catch(PDOException $e) {
        echo \'ERROR: \' . $e->getMessage();
    }


    /* Toss back results as json encoded array. */
    echo json_encode($return_arr);
}

1 个回复
SO网友:Ricardo BRGWeb

您需要使用WPDB 对象对于示例中的查询类型,最好的方法是使用$wpdb->getcol. 类似这样的内容(未测试):

if ( isset( $_GET[\'term\'] ) ){
    global $wpdb;
    $term = filter_var( $_GET[\'term\'], FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE );
    if ( is_null( $term ) ) {
        echo json_encode( array() );
    } 
    else {
        $return_array = $wpdb->get_col( 
             $wpdb->prepare( 
                 "SELECT supplier_company 
                 FROM {$wpdb->prefix}_teleapo_supplier 
                 WHERE term = %s",
                 $term
             ) 
        );
        $return_arr = $return_arr ? $return_arr : array();
        /* Toss back results as json encoded array. */
        echo json_encode( $return_arr );
    }
}