Php Mandrill似乎正在破坏MySQL选择
我已经把它剥离下来,试图找到这个问题的根源,但根本无法指出它 这将成功地回显每个IDPhp Mandrill似乎正在破坏MySQL选择,php,mysql,select,mandrill,Php,Mysql,Select,Mandrill,我已经把它剥离下来,试图找到这个问题的根源,但根本无法指出它 这将成功地回显每个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'd //在数据库中
$result = mysqli_query($con,"SELECT id FROM users");
// Each user matching criteria
while($row = mysqli_fetch_array($result))
{
echo $row['id'];
}
但是,当我包含Mandrill时,它停止工作,但是我仍然会得到第一个ID echo'd
//在数据库中搜索昨天注册的用户
$result=mysqli_查询($con,“从用户中选择id”)
这对我来说是原始查询的问题。。。但我不明白为什么曼德尔会导致这种情况发生
还值得注意的是:
-没有来自Mandril的错误消息
-电子邮件确实成功地发送了最初,
$result
变量只存储了调用mysqli\u查询的结果,并且工作得很好。但是,当您添加邮件发送代码时,您意外地重用了相同的变量来存储Mandrill
操作的结果:
$result = $mandrill->messages->sendTemplate(...);
…从而丢失其初始值(mysqli_result的mysqli_
),并将其(资源)与新值(数组)交换-因此会收到错误消息
显然,最简单的解决方法是重命名此变量:
$mailStatus = $mandrill->messages->sendTemplate(...);
print_r($mailStatus); // or do something else with it
底线是:尽量避免使用过于通用的名称-最终所有$vars
和$data
和$result
在混合使用时都会对您造成很大的伤害。我在这里甚至没有谈论可读性。)
作为旁注(感谢@Pierre提到这一点),您最好将
$mandrill
变量的实例化移到循环之外-否则每次处理新行时,您都会使用include
。您应该将include和$mandrill=new mandrill添加到循环之外,因此,您不需要在循环的每次迭代中包含一个文件并实例化一个新对象
$result = $mandrill->messages->sendTemplate(...);
$mailStatus = $mandrill->messages->sendTemplate(...);
print_r($mailStatus); // or do something else with it