用于从移动应用程序的mysql服务器获取数据的PHP代码

时间:2015-04-16 12:23:40

标签: php jquery mysql ajax json

我的PHP代码从mysql服务器获取数据以显示哪个适用于网站,但我想使用相同的方法制作移动应用程序, 它是否适用于移动应用程序?因为我在ajax电话下面使用(下面的代码)。

我也可以在这里使用json,因为我需要帮助。

<?php
include('connect.php');
$filmId=$_GET['filmId'];
$sql ="SELECT *, DATE_FORMAT(filmReleaseDate, '%d %b %Y' ) filmReleaseDate FROM films where filmId ='$filmId'";
mysqli_query("SET NAMES utf8");
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result))
{
    $id=$row['filmId'];
    $name=$row['filmName'];
  $year=$row['filmYear'];

echo "$name, $year";

}
mysql_free_result($result);
mysqli_close($conn);
?>

这是ajax代码,当我点击href时,它将处理上面的php请求以获取数据。

var xmlhttp = new XMLHttpRequest();
var url = "./searchfilmsbyname.php";
xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        myFunction(xmlhttp.responseText);
    }
}
xmlhttp.open("POST", url, true);
xmlhttp.send();

function myFunction(response) {
    var arr = JSON.parse(response);
    var i;
    var out = "";
    for (i = 0; i < arr.length; i++) {
        out += "<li><a href ='filmdetails.php?filmId=" + arr[i].Id + "'>" + arr[i].Film + "</a></li>";
        if ((i + 1) == arr.length) {
            document.getElementById("searchfilmsbyname").innerHTML = out;
            $("#searchfilmsbyname").listview('refresh');
        }
    }    
}

1 个答案:

答案 0 :(得分:3)

我不确定它是如何在你的网站上运行的,也许你包括它而不是使用ajax,但上面代码的问题是你没有发回有效的json所以:

function myFunction(response) {
  var arr = JSON.parse(response);
  ...

会失败,因为:

$id=$row['filmId'];
$name=$row['filmName'];
$year=$row['filmYear'];

// this does not generate valid json:
echo "$name, $year";

你应该做的是将所有行添加到一个数组中,并且仅在结尾输出只编码为json的数组:

$rows = array();
while($row = mysqli_fetch_array($result))
{
    $rows[] = array('id' => $row['filmId'],
                    'name' => $row['filmName'],
                    'year' => $row['filmYear']);
}
echo json_encode($rows);

除此之外,你有一个SQL注入问题。您应该使用预准备语句,而不是将变量直接注入查询。