我在前端post提交页面中创建了动态添加/删除字段。使用$wpdb->insert,系统运行得很好。
我还在前面创建了一个草稿编辑页面。在这个页面上,我希望这些动态字段得到更新。我尝试了$wpdb->update,但它只更新了最后一个字段。简而言之,我想在单次单击中更新多个行。
我的代码:
$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' )
);
}
请帮忙..。谢谢
发布于 2018-01-29 11:20:39
这是在黑暗中有点刺痛,但我很有信心,问题是你的前程循环。它坏了(它不会执行任何操作,因为只有一个空语句(;
)会受到影响,而且您可能希望它有一个包含其余代码的块。
例如:
将只打印3,而
将打印1、2和3的行。作为一般规则,我建议始终明确表示希望在循环中重复的内容。使用花括号,例如。
它很容易阅读,并使您不受此类错误的影响。如果您必须在循环中添加另一行,只需在结束大括号之前添加它。
这段代码可能就是你想要的。
$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' )
);
}
}
https://wordpress.stackexchange.com/questions/292469
复制相似问题