我尝试使用$ 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();
}
?>
答案 0 :(得分:1)
%s
表示您打算使用varchar
输入,这在您传递$mysqltable_name
文本的PHP端很好,但在MySQL级别上,要执行的查询将是包含$mysqltable_name
周围的撇号,因为它是varchar
。您需要在PHP代码中使用字符串连接或硬编码表名来避免它。如果您的table
名称是动态的,那么您需要确保它不包含有害代码。