Php 在WordPress中读取sql文件

Php 在WordPress中读取sql文件,php,mysql,wordpress,Php,Mysql,Wordpress,我试图通过从file.sql中读取一些sql并在调用查询之前将其放入字符串来填充数据库表。但我似乎无法将文件加载到字符串中。有什么好处 function db_data() { WP_Filesystem(); global $wp_filesystem; global $wpdb; $table_name = $wpdb->prefix . "tableName"; $file = "/sql/my_insert_query.sql";

我试图通过从file.sql中读取一些sql并在调用查询之前将其放入字符串来填充数据库表。但我似乎无法将文件加载到字符串中。有什么好处

function db_data() {
    WP_Filesystem();
    global $wp_filesystem;
    global $wpdb;


    $table_name = $wpdb->prefix . "tableName";
    $file = "/sql/my_insert_query.sql";
    $sql_insert = "INSERT INTO $table_name (id, something) ";
    $sql_insert .= $wp_filesystem->get_contents( $file );
    $rows_affected = $wpdb->query( $sql_insert );
}
$sql\u插入结果是一个空字符串。我做错了什么

编辑:

找到了到达正确目录路径的方法。这是完成的代码:

function db_data() {
    WP_Filesystem();
    global $wp_filesystem;
    global $wpdb;

    $table_name = $wpdb->prefix . "tableName";
    $sql_insert = "INSERT INTO $table_name (id, something) ";
    $dir = plugin_dir_path( __FILE__ );
    $file =  $dir."/sql/my_insert_query.sql";
    $sql_values = $wp_filesystem->get_contents( $file );
    $sql_insert .= $sql_values;
    $rows_affected = $wpdb->query( $sql_insert );
}

有关查找和读取sql文件的答案。检查下面的答案。

让我们首先开始调试文件路径问题。这里有两件事你可以用

function db_data() {
    WP_Filesystem();
    global $wp_filesystem;
    global $wpdb;
    echo 'Current Path is '. __DIR__;
    $file =  __DIR__."/sql/my_insert_query.sql";
    if(!is_readable($file)) {
        echo 'File not found or not readable '.$file;
    }     
    $table_name = $wpdb->prefix . "tableName";

    $sql_insert = "INSERT INTO $table_name (id, something) ";
    $sql_insert .= $wp_filesystem->get_contents( $file );
    $rows_affected = $wpdb->query( $sql_insert );
}

这至少会提供有关文件路径的更多信息。

/sql/my\u insert\u query.sql
绝对路径吗?因为如果它是相对于文档根目录的,那么它将是空的。@amenadiel它不是绝对路径。我使用了WP_PLUGIN_DIR,但是它没有斜线,所以也没用。所以我应该使用绝对路径,但是我如何到达它呢?因为WP_PLUGIN_DIR给了我缺少斜杠的路径应该是相对于wordpress根目录的。@amenadiel我现在尝试了它,但它仍然返回一个空字符串。@amenadiel谢谢。我现在在上班,我得走了,所以我可能要到星期一才能回复。。但我真的很感谢你的帮助。我无法使用echo查看发生了什么,因为当我在WordPress中激活插件时,它不会显示出来,但我使用插入查询查看数据库中发生了什么,并且我能够找到正确的目录。现在我的sql文件读取和插入工作!唯一的问题是,DIR不起作用,WP_PLUGIN_DIR给了我没有斜杠的路径。。我不能硬编码路径,那么我该怎么做呢?WP_PLUGIN_DIR应该给你没有尾随斜杠的路径,和DIR一样。如果后者不起作用,可能您正在使用PHP5.2。您还可以将其替换为
dirname(_文件__)但是WP\u插件\u目录也可以。