从JSON返回结果以插入到mysql表中,然后通过电子邮件发送结果

时间:2015-01-10 09:02:06

标签: php mysql json sendmail

我需要有关如何将返回的JSON数组结果插入到sql表中,然后通过电子邮件发送返回的结果的帮助。

以下是我的php脚本到目前为止成功获取查询结果到JSON数组

<?php

    // set up the connection variables
    $db_name  = 'dbanme';
    $hostname = 'host';
    $username = 'username';
    $password = 'password';

    // connect to the database
    $dbh = new PDO("mysql:host=$hostname;dbname=$db_name", $username, $password);

    // a query get all the records from the users table
    $sql = 'SELECT tabel1.id,table1.type FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table1.id NOT IN ( SELECT table2.id FROM table2)';

    // use prepared statements, even if not strictly required is good practice
    $stmt = $dbh->prepare( $sql );

    // execute the query
    $stmt->execute();

    // fetch the results into an array
    $result = $stmt->fetchAll( PDO::FETCH_ASSOC );

    // count number of results returned in the array
    $countresults = count($result);
    echo $countresults;


    if ( $countresults > 0 ) {

    // convert to json
    $json = json_encode( $result );

    // decode the results returned and insert them into table 2

    // email the results returned


    }

    else {
        echo ' no results found';
    }

&GT;

更新: 表1结构: ID INT 10 键入VARCHAR 50

表2结构: ID INT 10 键入VARCHAR 50

我意识到我不需要将结果编码为JSON但我仍然无法获取代码以从数组返回结果并将它们插入到tabl2中,然后直接通过电子邮件发送结果。

1 个答案:

答案 0 :(得分:0)

首先,您必须告诉我们您为什么首先将结果转换为json。你已经有了一个数组,在你的情况下你不需要一个JSON字符串。

无论如何,您将JSON字符串转换回如下数组:

$yourArray = json_decode($json)

现在您说要将数据插入表二。我不知道你的表是怎么样的,但如果我查看你的代码,我想你的sql看起来像这样:

$sql = 'INSERT INTO table2(id, type) VALUES (:id, :type)';

所以你的代码看起来像这样:

$sql = 'INSERT INTO table2(id, type) VALUES (:id, :type)';
$stmt->bindParam(':id', $yourArray ['id']);
$stmt->bindParam(':type', $yourArray['type']);
$stmt = $dbh->prepare( $sql );
$stmt->execute();

如果您想通过邮件发送结果,只需使用默认邮件功能:

$to = 'RECIEVER@MAIL'
$subject = 'SUBJECT';
$message='Your values are: '.$yourArray ['id'].' - '.$yourArray['type'];

mail($to,$subject,$message);

如果默认邮件功能不起作用,则您的服务器可能不允许(有时出于安全原因)。在这种情况下,我建议使用第三方库,如PHPMailer

你的问题没有透露很多信息,我尽我所能,但上面的代码仍然更像是伪代码。