更新当前数据库表

时间:2015-06-22 19:28:43

标签: php mysql sql database wordpress

我正在创建一个WordPress插件,我需要在查询中更新当前数据库的表。但是,我不需要将数据库名称写入sql,而是需要一些方法在查询中选择它,这样无论数据库的名称是什么,它都可以工作。这是我目前的代码:

$stmt = $conn->prepare("UPDATE `wp_plugin_development` . `wp_users` SET `user_pass` = ? WHERE `user_login` = ?") or trigger_error($mysqli->error);
$stmt->bind_param('ss', $user_password[$i], $user_login[$i]);

wp_plugin_development是我当前的数据库名称,但需要用其他一些选择数据库名称的方式替换。我希望我能写出类似UPDATE SELECT DATABASE()的东西,但这显然不起作用。也许有一种完全不同的编码方式?我仍然认为自己对这一切都不熟悉,所以如果我遗漏了一些明显的东西,我很抱歉。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您不需要当前数据库名称,因为已与当前数据库建立连接。 你需要表名!设置wordpress时设置前缀。您需要前缀,因为每个安装都不同。

正确的Wordpress方式是这样的:

global $wpdb;
$table_name = $wpdb->prefix . 'plugin_development';

存储前缀(wp_)。在WP;如果不直接使用PDO或MySqli,则使用全局$wpdb对象。

$wpdb->update($table_name, $data, $where, $format = null, $where_format = null);

如果您确实需要数据库名称,则会将其存储在$wpdb->dbname;中。 以下是示例和类引用:

https://codex.wordpress.org/Class_Reference/wpdb

答案 1 :(得分:0)

我使用另一个数据库作为连接方法(这是在$conn变量中定义的)。所以我使用$wpdb建立了与当前数据库的新连接,并将其命名为$this_db。现在我不必在查询中指定数据库名称,它就像我想要的那样工作。为了更好的上下文,这里是我添加/更改的代码:

$thisServername = $wpdb->dbhost;
$thisUsername = $wpdb->dbuser;
$thisPassword = $wpdb->dbpassword;
$thisDBname = $wpdb->dbname;

$this_db = new mysqli($thisServername, $thisUsername, $thisPassword, $thisDBname);

$stmt = $this_db->prepare("UPDATE `wp_users` SET `user_pass` = ? WHERE `user_login` = ?") or trigger_error($mysqli->error);
$stmt->bind_param('ss', $user_password[$i], $user_login[$i]);

因此,要解决此特定问题,此解决方案可行。对不起,我忘了提到使用外部数据库。这是我遗漏的一个重要问题。谢谢大家的意见。

答案 2 :(得分:-1)

函数database()返回数据库名称 - http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_database - 所以你可以先运行SELECT DATABASE();来获取数据库名称。