很接近。有几件事很突出。
首先,我假设您在共享代码之前就这样做了。在接受用户输入之前验证nonce很重要。了解更多信息Nonce in the Codex.
接下来,您要使用sanitize_text_field
结合wp_unslash
. Trim更像是一个助手函数,而不是用于消毒,但它在这里有助于确保预期的结果。
最后,将整个SQL查询组合到$wpdb->prepare()
. 回想起$wpdb->prefix
通常包括下划线。您的代码将生成wp__my_table
, 例如(2个下划线)。
Note: 我改变了$this->wpdb
向全球$wpdb
. 这对你来说可能是不必要的,但我想确保其他得到这个答案的人有正确的背景。为了进行测试,我还将表名更改为posts,将表名更改为title。
if ( isset( $_POST[\'name\'] ) ) {
global $wpdb;
$post_name = sanitize_text_field( wp_unslash( trim( $_POST[\'name\'] ) ) ) );
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}posts WHERE post_title = %s", $post_name );
$results = $wpdb->get_results( $sql, ARRAY_A );
}
有关清理输入数据的WordPress编码标准的更多信息,请访问
The WordPress Coding Standards.