当WP最初为您连接DB时,尝试使用自己的方法连接DB不是一个好的做法。
问题是我必须在插件源代码中声明这些变量($db\\u host、$db\\u user、$db\\u pass、$db\\u name)。
所有这些属性都在中定义wp-config.php
文件,位于根区域。
如果要获取这些常量,只需包含文件并调用常量,或者使用REGEX(最好使用REGEX,因为可能还有其他回调需要加载WordPress)
// loading the config file to pull the DB_* constants
$dirname = dirname(__FILE__);
$root = false !== mb_strpos( $dirname, \'wp-content\' ) ? mb_substr( $dirname, 0, mb_strpos( $dirname, \'wp-content\' ) ) : $dirname;
// if $root is not correct, provide a static path then, $root = \'/path/to/root/dir\'
// assuming constants are ready (wp is configured), let\'s get them.
require_once( $root . "wp-config.php" );
echo var_dump(
\'DB name\', DB_NAME,
\'DB user\', DB_USER,
\'DB password\', DB_PASSWORD,
\'DB host\', DB_HOST
);
这里有一个更好的解决方案:
Load WordPress
require( \'/wp-blog-header.php\' );
您应该提供该文件的工作路径!
要测试是否已成功加载WordPress,请转储以下内容:
add_action("wp", function() {
echo sprintf( "Yes! I am creating with WordPress v. %s!\\n", get_bloginfo("version") );
exit("I exits\\n");
});
Now use WordPress DB API
要插入数据,请执行以下操作
wpdb::insert
您应该使用。这里是语法
$wpdb->insert( $table, $data, $format );
示例用途:
$wpdb->insert(
\'messages\',
array(
\'PM_ID\' => (int) $pm_id,
\'sender\' => $current_user->ID,
\'recipient\' => (int) $recipient,
\'message\' => "Hello!\\n",
\'date\' => time()
)
);
$record_id = $wpdb->insert_id;
在本例中,中的数组
$wpdb->insert
\'s 2nd param是一个数组,索引作为列名,并将这些列的值插入到一个独立记录中,您可以使用该记录获取其ID
$wpdb->insert_id
获取该表中最后一个记录插入ID。
如果您至少不使用SQL注入,希望这会有所帮助$wpdb::insert
或准备好的语句,而不是直接查询。