如何使用$wpdb->UPDATE更新多行

时间:2018-01-29 作者:Minesh

我在前端帖子提交页面中创建了动态添加/删除字段。使用$wpdb->insert,系统工作正常。

我还在前端创建了一个草稿编辑页面。在此页面上,我希望更新这些动态字段。我尝试了$wpdb->更新,但它只更新最后一个字段。简而言之,我想在单击时更新多行。

我的代码:

$project_id = $_SESSION[\'project_id\'];
global $wpdb;
$reward_ids = $wpdb->get_results("SELECT * FROM wpxa_rewards WHERE project_id = $project_id");
foreach($reward_ids as $reward_id); $r_id = $reward_id->ID;

$count = count( $project_reward_title );
for ( $i = 0; $i < $count; $i++ ) {

global $wpdb;

$wpdb->update( \'wpxa_rewards\',

  array(

    \'reward_title\'       => "$project_reward_title[$i]",
    \'reward_description\' => "$project_reward_description[$i]",
    \'reward_amount\'      => "$project_reward_amount[$i]",
    \'reward_shipping\'    => "$project_reward_shipping[$i]",
    \'est_date\'           => "$project_est_date[$i]"

  ),

  array( \'ID\' => $r_id ),

  array(

    \'%s\',
    \'%s\',
    \'%d\',
    \'%s\',
    \'%s\'

  ),

  array( \'%d\' )

);

}
Plz帮助。。谢谢

1 个回复
SO网友:janh

这有点像是在暗中捅一针,但我很有信心,问题在于你的foreach循环。它被破坏了(它不会执行任何操作,因为只有一条空语句(;) 受影响,您可能希望它有一个包含其余代码的块。

例如:

<?php
foreach(array(1, 2, 3) as $test);  
print $test . "\\n";
将仅打印3,而

<?php
foreach(array(1, 2, 3) as $test) // note the lack of the semicolon.
print $test . "\\n";
将打印1、2和3的行。作为一般规则,我建议始终明确表示要在循环中重复的内容。使用大括号,例如。

<?php
foreach(array(1, 2, 3) as $test) {
    print $test . "\\n";
}
这本书很容易阅读,可以让你免受这些漏洞的侵害。如果必须在循环中添加另一行,只需将其添加到右大括号之前。

这段代码可能就是您想要的。

$project_id = $_SESSION[\'project_id\'];
global $wpdb;
$reward_ids = $wpdb->get_results("SELECT * FROM wpxa_rewards WHERE project_id = $project_id");
foreach($reward_ids as $reward_id) {
    $r_id = $reward_id->ID;

    $count = count( $project_reward_title );
    for ( $i = 0; $i < $count; $i++ ) {

        $wpdb->update( \'wpxa_rewards\',

        array(

            \'reward_title\'       => $project_reward_title[$i],
            \'reward_description\' => $project_reward_description[$i],
            \'reward_amount\'      => $project_reward_amount[$i],
            \'reward_shipping\'    => $project_reward_shipping[$i],
            \'est_date\'           => $project_est_date[$i]

        ),

        array( \'ID\' => $r_id ),

        array(

            \'%s\',
            \'%s\',
            \'%d\',
            \'%s\',
            \'%s\'

        ),

        array( \'%d\' )

        );

    }
}

结束

相关推荐

正在使用$wpdb复制WP_Query“%s”参数

进行以下基本查询:$posts = new WP_Query(array( \'post_type\' => \'page\' \'s\' => \'some search query\' )); WordPress将拆分some search query 分为3个单独的搜索词,这就是为什么我需要使用这个$wpdb函数。我想要相同的功能,但将整个查询视为一个搜索词。这就是我所处的位置:global $wpdb; $post_type =