Wordpress插件自定义数据库查询(SQL UPDATE SET WHERE)

时间:2013-02-19 22:36:46

标签: mysql wordpress wordpress-plugin

快速背景:

  • CRUD插件
  • WP 3.5
  • 为我的个人知识创建此插件 - 我确信已经存在。
  • 变量回应确定。
  • 插件的创建部分需要3个小时的研究才能使查询正常工作。在codex中尝试了一切,从Stack Overflow中获得了一些答案,直到有效。

问题:

  • 更新自定义表格中的行。
  • 此查询将在SQL中运行 - >

    更新wp_current_issue SET issue_year = 9999,issue_month = 29 WHERE issue_id = 17;

尝试:

global $wpdb;
$wpdb->update(CURRENT_ISSUE_TABLE, 
        array(
            'issue_year' => $issue_year,
            'issue_month' => $issue_month
            ),
        array('issue_id' => $issue_edit_id),
        array('%d','%d'),
        array('%d'));

以及:(在列名称周围有和没有反引号)

global $wpdb;
$sql = $wpdb->prepare("UPDATE wp_current_issue SET issue_year=".$issue_year.", issue_month=".$issue_month." WHERE issue_id=".$issue_edit_id);

$wpdb->query($sql);

现在有趣的是,我通过INSERT INTO语句完成了同样的事情。尝试了一切。唯一可行的是:

        global $wpdb;

    $sql = $wpdb->prepare(
        "INSERT INTO `".CURRENT_ISSUE_TABLE."` (`issue_path`,`issue_img_path`,`issue_year`,`issue_month`) VALUES (%s,%s,%d,%d)", $fileName_issue, $fileName_img, $issue_year, $issue_month);

    $wpdb->query($sql);

任何人都知道如何为更新语句重写此查询?

1 个答案:

答案 0 :(得分:1)

如果您想将该插入内容重写为更新,请假设我正确理解您的问题,然后使用

$sql = $wpdb->prepare(
"UPDATE `".CURRENT_ISSUE_TABLE."` SET `issue_path` = %s, `issue_img_path` = %s, `issue_year` = %s, `issue_month` = %s
    WHERE issue_id = %i", $fileName_issue, $fileName_img, $issue_year, $issue_month, $issue_edit_id);

其余的都一样。