php - 使用 $wpdb->prepare() 时出错

标签 php mysql wordpress

我正在尝试使用 $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/

相关文章:

php - 在 sudo 模式下运行 emacs 时保留用户的配置

php - Redis - 按请求缓存流程

php - 使用 AJAX 时未正确转义引号

wordpress - 将 Azure 网站 (Wordpress) 连接到存储帐户

PHP MYSQL $行[$变量]

php - 如何根据 "where"条件使用外键自动完成显示另一个表中的数据

mysql - 使用锁定结构和撤消日志条目调试长时间运行的 SQL 事件事务

PHP Mysql DISTINCT 列当前日期

wordpress - 构建文件夹应该包含在 git repo 中吗?

javascript - 如何在 wordpress 上根据用户应用不同的样式表