我试图通过从 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_insert 结果是一个空字符串。我在这里做错了什么?
编辑:
找到了到达正确目录路径的方法。这是完成的代码:
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 );
}
这至少可以提供有关文件路径的更多信息。
关于php - 在 WordPress 中读取 sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207309/