用于从 mysql 服务器获取移动应用程序数据的 PHP 代码 [关闭]
Posted
技术标签:
【中文标题】用于从 mysql 服务器获取移动应用程序数据的 PHP 代码 [关闭]【英文标题】:PHP code to fetch data from mysql server for mobile app [closed] 【发布时间】:2015-06-22 20:30:46 【问题描述】:我的 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');
【问题讨论】:
作为一个公平的警告,您的查询可能是 SQL 注入的,因为您直接在查询中使用来自用户输入的变量。我强烈建议阅读prepared statements。 我不知道我是否可以推荐我写的一个工具包,但是看看Aye Aye Api。它仍处于测试阶段,缺乏适当的文档(有一个快速入门指南)甚至是 website,但它的设计目的是使构建 API 尽可能简单。将它与 Doctrine 混合使用,您将拥有非常强大的 API MySQL 访问权限。 【参考方案1】:我不确定它在您的网站上是如何工作的,也许您正在包含它而不是使用 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 注入问题。您应该使用准备好的语句,而不是将变量直接注入到查询中。
【讨论】:
@ jeroen 如果我使用你的代码,我会得到如下数据:["id":"55","name":"Godzilla","year":"2014"] 我想要像“Godzilla, 2014”之类的东西,我能够获取 json 数据,但我如何将它们转换为用户看到相同的数据? @RRPandey 是的,但这是您的 javascript 所期望的,如果您想在 javascript 中执行... + arr[i].id + ...
之类的操作,您需要这样做。您必须选择您的 php 脚本是返回普通文本还是 json,除非您开始测试 ajax 调用或常规包含并相应地修改输出,否则您不能同时拥有这两种方式。
因为我打算将它用于移动应用程序,我想以文本形式使用该 json 格式,例如“Godzilla,2014”我如何使用与我在 js 中非常新的一样它有点变硬
@RRPandey 你不能,至少不可靠,当涉及 javascript 时,json 是要走的路。你可以在你的 ajax 请求中发送一个额外的值来指示输出应该是 json 并在你的脚本中使用它来确定输出的类型。
好的,在这种情况下,如果我在 href 上使用上述 php 代码,请告诉我,例如 " 它可以在移动应用上运行吗?以上是关于用于从 mysql 服务器获取移动应用程序数据的 PHP 代码 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章