完整日历事件的pdo查询不会触发?

时间:2016-06-22 18:53:51

标签: php jquery html

每次选择下拉列表时,我都会尝试选择个别教师的时间表显示在完整日历上。

这是我写的jquery:

  <script>
      $(document).ready(function() {
        $("#teachermale").change(function(){
                  var str = "";
                   $("#teachermale option:selected").each(function(){
                      str += $(this).text() + "";  
                  });
              //$("#val").text(str);
                  console.log(str);
              changeDisplay(str);

               }).change();

      }); 
      function changeDisplay(str){
        console.log(str);
         $.ajax({
                 url:'find_event.php',
                 type:'POST',
                 data : '&str='+encodeURIComponent(str),
                 dataType:'text',
                 success: function(json) {
                    alert('The string has been passed');
                 },
                 error: function(xhr, textStatus, errorThrown) {
                    alert(xhr.responseText); 
                 }
              });

       } 
      </script>    

选择框的HTML:

      <select id="teachermale" name="teachermale">
        <option selected disabled>Male Teachers</option>
        <option value="Mohamed Adil">Mohamed Adil</option>
        <option value="Sherif Reda">Sherif Reda</option> 
        <option value="Mohamed Shahban">Mohamed Shahban</option> 
        <option value="Abdullah al Haiti">Abdullah al Haiti</option>
        <option value="Salah">Salah</option>
        <option value="Ahmed Nabil">Ahmed Nabil</option>  
        <option value="Abdul Tawab">Abdul Tawab</option>
        <option value="Mahmoud Mahmoud">Mahmoud Mahmoud</option>  
        <option value="Ahmed Ghanim">Ahmed Ghanim</option>
      </select>

这是php for find_event.php

       <?php
            // List of events
            $json_array["title"]=$_POST["str"];
            $title =$json_array["title"];

            // connection to the database
            try{

                    $pdo = new PDO('mysql:host=localhost;dbname=******', '*****', '*******');
                } catch(Exception $e) {

                exit('Unable to connect to database.');
            }

             // Query that retrieves events
            $requete = "SELECT * FROM `evenement` WHERE `title`=?";
             // Execute the query
            $resultat = $pdo->query($requete) or die(print_r($pdo->errorInfo()));
             // sending the encoded result to success page
            $resultat->execute($title);

             $events = array();
             $dbEvents = $resultat->fetchAll(PDO::FETCH_ASSOC);

                foreach ($dbEvents as $event) {
                        $event['allDay'] = false;
                        $events[] = $event;
                }


             echo json_encode($events);

            ?>

由于select jquery函数中的console.log语句以及changeDisplay()函数,控制台会将教师名称写入两次。但是,似乎查询不会执行。有人可以在这帮助我。

1 个答案:

答案 0 :(得分:0)

首先,您正在混合功能 - queryexecute这两个功能都相同 - 执行查询。在这里你使用?占位符,但不要为它设置值。

所以,你的正确代码应该是:

// Query that retrieves events
$requete = "SELECT * FROM `evenement` WHERE `title`=?";
// Prepare your query
$stmt = $pdo->prepare($requete);
if ($stmt) {
    // argument of execute is array, not single value
    if ($stmt->execute(array($title))) {
        $events = array();
        $dbEvents = $stmt->fetchAll(PDO::FETCH_ASSOC);
        // more codes
        // ...
    } else {
        // check for error
        print_r($stmt->errorInfo());
    }
}