所以我想知道是否可以申报variable
你会把它放在query
然后在update_post_meta
作用
这就是我试图做到的。
首先,我连接到另一个数据库,从中获取信息,然后查询结果(在SQL works中测试),如下所示:
global $newdb;
$newdb = new wpdb(\'....\', \'....\', \'....\', \'....\');
$newdb->show_errors();
$column1 = "member_name";
$column2 = "memberID";
$meta_key = "field_12312ewrwe12312";
$result = $newdb->get_results("SELECT ".$column1.",".$column2." FROM members");
$columnq = $newdb->get_results("SELECT ".$column1." FROM members");
$columnq2 = $newdb->get_results("SELECT ".$column2." FROM members");
最显著的是
$columnq
和
$columnq2
.
然后,我使用查询字符串在update_post_meta
功能/按钮,并认为这应该在空白放置$column1
和$column2
单击“提交”后,仅添加实际value
它包含一个新帖子,叫做member_name
每次我提交。
代码:
<form action="" method="post">
<input type="submit" value="Test" id="submit" name="submit">
<?php
if(isset($_POST[\'submit\'])){
$postargs = array(
\'post_title\' => $columnq,
\'post_status\' => \'draft\',
\'post_type\' => \'bedrijf\'
);
$thisid = wp_insert_post ( $postargs, true);
if ( is_wp_error($thisid) ) {
return get_error_codes();
} else {
update_post_meta( $thisid, $meta_key, $columnq2);
}
}
var_dump($columnq);
var_dump($columnq2);
?>
</form>
附言:是
var_dump
显示正确的信息。
编辑:添加var_dump
.由var_dump
太多了,取而代之的是我会把两者都贴出来。
专栏Q:
array(460) { [0]=> object(stdClass)#1026 (1) { ["member_name"]=> string(18) "Some information" }
第2列:
array(460) { [0]=> object(stdClass)#1486 (1) { ["memberID"]=> string(1) "0" }
EDIT2:我还放置了
var_dump
进入按钮本身(下
update_post_meta
) 它输出完全相同且正确的信息。然而,在后台代码中,它只添加了一个帖子,其中也包含
(no title)
作为名称。
最合适的回答,由SO网友:s_ha_dum 整理而成
首先,这令人困惑:
$result = $newdb->get_results("SELECT ".$column1.",".$column2." FROM members");
$columnq = $newdb->get_results("SELECT ".$column1." FROM members");
$columnq2 = $newdb->get_results("SELECT ".$column2." FROM members");
您应该只需要其中的第一个或最后两个(有一个修改)。
其次get_results
将返回一个数组或对象(默认值),因此在此处使用它是行不通的:
\'post_title\' => $columnq,
post_title
不接受数组或对象作为值。
如果要从数据库中检索单个字符串值,请使用get_var
. 然后这将起作用:
$columnq = $newdb->get_row("SELECT ".$column1." FROM members");
$postargs = array(
\'post_title\' => $columnq,
\'post_status\' => \'draft\',
\'post_type\' => \'bedrijf\'
);
要检索单行,请使用
get_row
并使用适当的语法:
$result = $newdb->get_results("SELECT ".$column1.",".$column2." FROM members");
$postargs = array(
\'post_title\' => $result[$column1],
\'post_status\' => \'draft\',
\'post_type\' => \'bedrijf\'
);
但您的代码仍然有点混乱,因为您似乎正在从外部数据库/表中检索所有行,但试图将这些行当作一行来使用。
$columnq = $newdb->get_results("SELECT {$column1},{$column2} FROM members");
foreach ($columnq as $c) {
$postargs = array(
\'post_title\' => $c->column1,
\'post_status\' => \'draft\',
\'post_type\' => \'bedrijf\'
);
// code to insert post
}