我正在尝试使用 $wpdb->prepare() 函数,但它返回错误。 SQL语法有什么问题?
WordPress 数据库错误:[您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“wp_spreadsheets”WHERE id = 6'附近使用的正确语法]
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();
}
?>
最佳答案
%s
表示您打算使用 varchar
输入,这在您传递 $mysqltable_name
文本的 PHP 端很好, 但在 MySQL 级别上,要执行的查询将包含 $mysqltable_name
周围的撇号,因为它是 varchar
。您需要使用字符串连接或硬编码表名来避免在您的 PHP 代码中使用它。如果您的表
名称是动态的,那么您需要确保它不会包含有害代码。
关于php - 使用 $wpdb->prepare() 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181064/