我的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');
}
}
}
答案 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注入问题。您应该使用预准备语句,而不是将变量直接注入查询。