javascript - 将 SQL 数组数据解析为 php mail()

标签 javascript php mysql

我正在执行 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/

相关文章:

javascript - FirePHP 不返回 ajax 请求查询,但返回正常的页面加载查询

javascript - 如何在Vala中的webkit2gtk-4.0中获取JS结果?

php - 获取 html 代码到一个 php 变量

php - #1062 - key '31' 的重复条目 'PRIMARY'

mysql - 如何将远程 mysql 数据库转储到我的本地机器?

mysql - 将 Upsert 与 MySQL2 和 Rails 4 一起使用时访问被拒绝

javascript - 更改当前网页上的一些(即不是全部)显示文本

javascript - 在没有地址栏的 Android 上打开链接

php - 如何将参数数组传递给bind_param?

php - 如何制作由 Google 索引为静态页面的 PHP/Cakephp 数据库驱动页面