ajax为mysql查询发布了多个值

时间:2016-04-02 20:19:24

标签: php jquery mysql ajax

我有这个ajax代码,它传递一个mysql查询变量。我需要传递一个其他变量。我已经获得了变量,但我不知道如何将其添加到现有代码中。

这是代码

function Docent(){

var opleidingid = $('#opleidingddl').val();
var datum = $('#datumddl :selected').text();

$('#docentddl').html();
$('#docentddl').html("<option>Loading.....</option>");
$.ajax({
       type:"POST",
       url:"Docent.php"
       data :
       {
       'opleidingid': opleidingid,
       'datum'      : datum
       },
       success: function(data){
       $('#docentddl').html();
       $('#docentddl').html("<option value='0'>Selecteer docent</option>");
       $.each(data,function(i,item){
              $('#docentddl').append('<option value="'+ data[i].Opleiding_ID +'">'+ data[i].Docent+'</option>');
              $('#docentddl').selectpicker('refresh');
              });
       },
       complete: function(){
       }
       });

 }

PHP

<?php

include ('config.php');

$opleidingid    = $_POST['opleidingid'];
$datum        = $_POST['datum'];


$sql=mysql_query("SELECT * FROM Docent_relatie WHERE Opleiding_ID = 'opleidingid'");
if(mysql_num_rows($sql)){
    $data = array();
    while($row=mysql_fetch_array($sql)){
        $data[] = array(
                        'Opleiding_ID' => $row['Opleiding_ID'],
                        'Docent' => $row['Docent'],
                        'OpleidingDatum' => $row['OpleidingDatum']
                        );
    }
    header('Content-type: application/json');
    echo json_encode($data);
}

?>

1 个答案:

答案 0 :(得分:0)

确定。所以我回到了我的电脑。 它应该看起来像这样。 一个重要的评论。 你不要想要使用mysql弃用的方法。

DO WANT 使用PDO而不是mysql或mysqli。

始终遵循此规则:

PDO使用可以随意重复使用的准备好的声明。

1:你准备好使用?每个值。

2:绑定值(按查询中的外观顺序,1,2,3 ....)

3:你执行声明。

4:你使用foreach循环遍历结果数组,而不是一段时间。

需要注意的是。在PHP中,结果中的foreach循环是冗余。 您可以直接回显$ result并在javascript中处理它(在这种情况下,在查询中,而不是select *,选择Opleiding_ID,Docent,OpleidingDatum但我不想&#34;修改&#34;您的逻辑。

使用Javascript:

function Docent() {
var opleidingid = $('#opleidingddl').val();
var datum = $('#datumddl :selected').text();

$('#docentddl').html("<option>Loading.....</option>");
var datas = {'opleidingid': opleidingid, 'datum': datum};

$.ajax({
    cache: false,
    type: "POST",
    url: "Docent.php",
    data: datas,
    success: function (data) {
        var result = $.parseJSON(data);
        if (result.ctrl === true) {
                $('#docentddl').html("<option value='0'>Selecteer docent</option>");
                $.each(result.response, function (i, item) {
                    $('#docentddl').append('<option value="' + item.Opleiding_ID + '">' + item.Docent + '</option>');
                });
                $('#docentddl').selectpicker('refresh');
        }else{
            alert(result.response);// error message from php
        }
    }
});

}

PHP:

define("SQLHOST", "127.0.0.1");
define("SQLDB", "databasename");
define("SQLUSER", "login");
define("SQLPASS", "password");
try {
    $con = new PDO('mysql:host=' . SQLHOST . ';dbname=' . SQLDB . ';charset=UTF8', SQLUSER, SQLPASS);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt= $con->prepare("SELECT * FROM Docent_relatie WHERE Opleiding_ID = ? AND datum= ?");
} catch (PDOException $e) {
    echo json_encode(['ctrl' => false, 'response' => 'Connection failed to the database: ' . $e->getMessage()]);
}
$opleidingid = (isset($_POST['opleidingid'])) ? $_POST['opleidingid'] : null; // control if ajax sent proper value
$datum = (isset($_POST['datum'])) ? $_POST['datum'] : null; // control if ajax sent proper value
if ($opleidingid !== null && $datum !== null) {
    $stmt->bindParam(1, $opleidingid, PDO::PARAM_INT); // could be PARAM_STR depending if $opleidingid is a int or a string
    $stmt->bindParam(2, datum, PDO::PARAM_STR);
    $stmt->execute();
    $result = $stmt->fetchall(PDO::FETCH_ASSOC);
    $data = array();
    if (count($result) !== 0) {
        foreach ($result as $key => $row) {
            $data[] = array(
                'Opleiding_ID' => $row['Opleiding_ID'],
                'Docent' => $row['Docent'],
                'OpleidingDatum' => $row['OpleidingDatum']
            );
        }
        echo json_encode(['ctrl' => true, 'response' => $data]);
    }else{
        echo json_encode(['ctrl' => false, 'response' => 'No results found']);   
    }
} else {
    echo json_encode(['ctrl' => false, 'response' => 'ajax did not send values']);
}