使用AJAX从MySQL获取

时间:2015-05-14 12:21:47

标签: javascript php jquery mysql ajax

我正在构建一个连接到数据库的Web应用程序,该数据库存储了几个变量,以使网站正常运行。

现在我使用php来连接和获取信息,但最后使用.html文件要容易得多,因此我计划使用AJAX来获取信息。

我有这段代码:

$(function () 
  {
     $.ajax({                                      
  url: 'api.php',                  
  data: {
        paramName: $("#partyIDInput").val()
    },
  method: post,               
      dataType: 'json',        
      success: function(data)         
      {
        var id = data[0];       
        var pID = data[1];      
        var pLOC = data[2];      
        var pNAME = data[3]; 
        var pFORMID = data[5];     
        var pFORMSONG = data[6];      
        var pFORMARTIST = data[7];       
        var pFORMNAME = data[8];    

        $('#partyTitle').append(""+pNAME+"");
      } 
    });
  }); 

通过api.php获取所有变量,如下所示:

    <?php

$db = new PDO('mysql:host=xxxxx;dbname=xxxxx;charset=utf8', 'xxxxx', 'xxxxx');

$partyInput = $_POST['paramName'];

$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID = $partyInput");

$stmt->execute(array($_POST['paramName']));

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

?>

但我的问题是,当用户写了&#34; partyID&#34;时,我在网页上输入了文字。在它和点击继续我希望脚本从具有该ID的行中获取信息。现在它只从第一行获取。

我之前从未使用过AJAX,所以如果你有时间,请解释一下发生了什么。

提前致谢。

编辑:

这里有输入,请注意我尚未根据css对页面进行优化。

<form style="margin-top:150px;" method="post" action="">
              <div class="list-block">
                <ul>
                  <li class="item-content" style="background: #fff;margin-bottom: -26px;">
                    <div class="item-inner">
                      <div class="item-input">
                        <input style="text-align:center;padding:0;" type="text" name="partyID" placeholder="Ange PartyID">
                      </div>
                    </div>
                  </li>
                </ul>
              </div>
              <div class="list-block">
                <ul>
                  <li>
                      <input type="submit" name="submit" value="Festa p&aring;!" class="login_bttn" style="  background: none;color: white;border: 1px solid white;border-radius: 500px;width: auto;margin-left: auto;margin-right: auto;margin-top: 40px;"></input>
                  </li>
                </ul>
                <div class="list-block-labe"></div>
              </div>
            </form>

2 个答案:

答案 0 :(得分:3)

您必须在AJAX调用中发送内容 -

$(function () 
  {
    $.ajax({                                      
      url: 'api.php',                  
      data: "", // needs to contain the data you want to send
      method: post, // you also need a method

一旦这样做,您发送的变量将在PHP的$_POST数组中提供,您可以在SQL查询中包含这些变量。这是一个basic AJAX guide,它可以让你更清楚。

另外你应该stop using mysql_* functions。它们不再被维护,而是officially deprecated。请转而了解prepared statements,并考虑使用PDO it's not as hard as you think

答案 1 :(得分:2)

首先,要传递该额外参数,请将data: "",更新为

data: {
    paramName: $("#idOfField").val()
},

其次,正如Jay Blanchard所说,切换到PDO

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID =?");

$stmt->execute(array($_POST['paramName']));

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);