我觉得我的问题的答案将是非常简单的。我编写了以下代码来访问加载到我的WordPress数据库中的表。我可以在phpMyAdmin中运行查询。它按预期运行。为了让它发挥作用,我尝试了我发现的每一件事。
我的职能:
function plcoa_email_address_list () {
global $wpdb;
$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM tblLots" );
echo "Lot count is " . $user_count . "";
$wpdb->show_errors( true );
$result = $wpdb->get_results($wpdb->prepare("SELECT LotNum FROM tblLots;" ));
$wpdb->print_error();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["email"] . "
";
}
} else {
echo "
0 results";
}
}
function plcoa_short_code( $atts=null, $content=null ){
extract(shortcode_atts(array('id'=>''),$atts));
plcoa_email_address_list ();
}
add_shortcode('listemails','plcoa_short_code');我得到的结果是:
抽签计数为369 WordPress数据库错误:[]从tblLots中选择LotNum;0
发布于 2018-04-04 23:12:10
你的问题是:
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {$result不是mysqli_result对象,它实际上是查询的结果。由于您从未向get_results方法传递第二个参数,以指定希望它们采用何种格式,因此它将假定为"OBJECT",因此正确的用法是:
$results = $wpdb->get_results("SELECT * FROM tblLots" );
if ( !empty( $results ) ) {
// output data of each row
foreach ( $results as $row ) {
echo $row['email'];注意,我还更正了SQL语句中的一个错误,您只向数据库询问了LotNum字段,然后尝试抓取期望数据库行完整的电子邮件,而您只要求一个列。
还请注意,所有这些都在代码法典和dev集线器中以及官方的wp.org文档中详细说明。
https://wordpress.stackexchange.com/questions/299852
复制相似问题