I have running a query to receive a list of e-mails who entered a competition to notify them that the competition has ended and when it will run.
I have looked through the code and cannot see where this fails. I am binding the ID and I am also receiving the correct data back when executing the query.
Here is the function I am running.
function notifyEntrants($id, $sendMsg){
$connect = db();
$stmt = $connect->prepare('SELECT DISTINCT CONCAT(`payer`.`FirstName`, " ", `payer`.`LastName`) AS "Name", `payer`.`Email` AS "Email" FROM `transaction` INNER JOIN `payer` ON `payer`.`DrawID` = `transaction`.`DrawID` WHERE `transaction`.`DrawID` = ?;');
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$drawTitle = getTitle($id);
while($row = $result->fetch_assoc()){
$email = $row['Email'];
$name = $row['Name'];
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
->setUsername(SITE_EMAIL)
->setPassword(MAIL_PASS)
;
$sendMsg .= "<br><br><a href=" . SITE_URL . "entries?id=".$id.">Click here</a> to see the entry list for this draw.";
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message("Live draw confirmation for $drawTitle"))
->setFrom([SITE_EMAIL => SITE_NAME])
->setTo([$email => $name])
->setBody($sendMsg, 'text/html');
// Send the message
$result = $mailer->send($message);
}
}
//echo notifyEntrants(15, "test");
On a var_dump I get this back array(2) { ["Name"]=> string(6) "Aidan " ["Email"]=> string(22) "adonnelly759@qub.ac.uk" }
Which is what I would be expecting. Just the one email address and users name.
However this ends up resulting in the error: "Fatal error: Uncaught Error: Call to a member function fetch_assoc() on integer".
Thanks in advance and sorry if this is something simple I just can't get my finger on the button of this issue.