使用$ wpdb-> prepare()

时间:2016-10-21 16:03:33

标签: php mysql wordpress

我尝试使用$ wpdb-> prepare()函数,但它返回错误。 SQL语法有什么问题?

WordPress数据库错误:[您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在'' wp_spreadsheets'附近使用正确的语法。 WHERE id = 6'在第1行]

SELECT table_name, table_code FROM 'wp_spreadsheets' WHERE id = 6

我使用的代码如下。

<?php

// Variables
$mysqltable_name = 'wp_spreadsheets';
$table_id = 6;

// Query
$query = $wpdb->prepare( 'SELECT table_name, table_code FROM %s WHERE id = %d', $mysqltable_name, $table_id );
$results = $wpdb->get_results( $query, ARRAY_A );

// Results
if( !empty( $results ) ) {
    print_r( $results );
} else {
    $wpdb->print_error();
}

?>

1 个答案:

答案 0 :(得分:1)

%s表示您打算使用varchar输入,这在您传递$mysqltable_name文本的PHP端很好,但在MySQL级别上,要执行的查询将是包含$mysqltable_name周围的撇号,因为它是varchar。您需要在PHP代码中使用字符串连接或硬编码表名来避免它。如果您的table名称是动态的,那么您需要确保它不包含有害代码。