我已经剥离了这个,试图找到这个问题的根源,但根本无法指出它。
这成功回应了每个ID
$result = mysqli_query($con,"SELECT id FROM users");
// Each user matching criteria
while($row = mysqli_fetch_array($result))
{
echo $row['id'];
}
然而,当我包含Mandrill时,它会停止工作,但我仍然会得到第一个ID echo
//为昨天注册的用户搜索数据库 $ result = mysqli_query($ con,“SELECT id FROM users”);
// Each user matching criteria
while($row = mysqli_fetch_array($result))
{
echo $row['id'];
include($_SERVER['DOCUMENT_ROOT'].'/src/Mandrill.php');
$mandrill = new Mandrill('hidden');
try {
$template_name = $content_template;
$message = array(
'html' => '<p>Example HTML content</p>',
'text' => 'Example text content',
'subject' => 'test',
'from_email' => 'hidden',
'from_name' => 'hidden',
'to' => array(
array(
'email' => 'hidden',
'name' => 'Tim',
'type' => 'to'
)
),
'headers' => array('Reply-To' => 'hidden.com'),
'important' => false,
'track_opens' => true,
'track_clicks' => true,
'tags' => array('$meta_tags'),
'google_analytics_domains' => array('hidden'),
'metadata' => array('website' => 'hidden')
);
$ip_pool = 'Main Pool';
$result = $mandrill->messages->sendTemplate('jotText-Auto-i101-welcome', $template_content, $message, $async, $ip_pool, $send_at);
print_r($result);
} catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
// A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123'
throw $e;
}
}
我收到的错误消息是
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, array given in /home/timbaker/public_html/jottext/foundation/database_tasks/cron_welcome.php on line 18
这对我来说这是原始查询的一个问题...但我无法理解为什么Mandrill会导致这种情况发生?
另外值得注意的是: - Mandril没有错误消息 - 电子邮件成功发送
答案 0 :(得分:3)
最初,$result
变量仅存储mysqli_query
调用的结果,并且它工作得很好。但是当你添加了邮件发送代码时,你不小心重用了同一个变量来存储Mandrill
动作的结果:
$result = $mandrill->messages->sendTemplate(...);
...因此失去了它的初始值(mysqli_result
),并用新值(数组)交换它(一个资源) - 因此你得到的错误信息。
显然,最简单的方法就是重命名这个变量:
$mailStatus = $mandrill->messages->sendTemplate(...);
print_r($mailStatus); // or do something else with it
底线:尽量避免使用过于通用的名称 - 最终所有$vars
和$data
以及$result
在混合时会很难咬你。我甚至不在谈论可读性。 )
作为旁注(感谢@Pierre提到这一点),你最好在循环之外移动$mandrill
变量的实例化 - 否则每次新行时你都会include
工作处理完毕。