我正在执行 SQL SELECT 来检索客户端数据,然后从中生成电子邮件。
被解析为 API 的 $param
是一个对象:
var param = {
delivery_id: "string",
order_id: "string",
}
然后使用 order_id 查询第二个表:
$param = $_REQUEST['param'];
$param = json_decode($param);
$collname = "orders";
$sql = 'SELECT * FROM '.$collname.' WHERE `id` = '.$param->order_id;
$result = $conn->query($sql);
//$conn is defined externally, and is not the cause of the problem
$aData = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$aData[] = $row;
}
sendEmail($aData);
} else {
echo "Error";
}
mysqli_close($conn);
第一个查询非常合理,当 $aData
作为字符串返回到前端时,它看起来符合预期;一组对象(一个对象)。
但是当我尝试在 sendEmail 函数中访问它时,它无法访问键值。当我尝试回显 json_encode($aData[0]->id)
(不起作用)而不是仅仅回显 json_encode($aData[0])
(有效)。
电子邮件实际上被发送到硬编码的密件抄送邮件,但数组中没有任何值。
function sendEmail(&$aData){
$to = $aData[0]->contact_email;
$subject = "".$aData[0]->id;
$txt = "Something something ".$aData[0]->contact.",
something something.
";
$headers = "From: email@email.com" . "\r\n" .
"BCC: email@email.com";
mail($to,$subject,$txt,$headers);
}
如何访问 API 中的对象键?
编辑:S.DEV 回答的问题。由于数据是作为关联数组而不是对象返回的,因此正确的定位语法是 $aData[0]['id']。
最佳答案
您可以尝试如下操作:
while($row = $result->fetch_assoc()) {
//$aData[] = $row;
sendEmail($row);
}
//function sendEmail(&$aData){
function sendEmail($aData){
关于javascript - 将 SQL 数组数据解析为 php mail(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50368468/