Php 在WordPress中读取sql文件
我试图通过从file.sql中读取一些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";
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目录也可以。