-1

我正在尝试实现一个搜索活动,该活动根据搜索从 mysql 表中获取数据。

我想编写一个 PHP 脚本来使用输入到 EditText 中的字符串并获取相邻的单元格。

例如,假设mysql表有两列:Firstname和surname;我希望能够通过搜索名字来获取姓氏(在 EditText 中输入名字。我知道这可能需要SELECT Surname FROM Names WHERE ...查询,但是如何从我的 Java 类中指示变量?

到目前为止的 PHP 脚本:

<?php
mysql_connect("localhost","root","");
mysql_select_db("androidapp");
$sql=mysql_query("SELECT surname WHERE $get'fname'");
while($row=mysql_fetch_assoc($sql)) $output[]=$row;
print(json_encode($output));
mysql_close();
?>

此外,HttpGet 方法或 HttPost 方法是否合适,结果应在 TextView 中显示姓氏

4

3 回答 3

0

我假设您想通过 http post 或 http get 从 php 向 java (android) 发送和接收数据。如果我错了,请纠正我。

基本上,您希望 php 返回的是与表中第一个名称匹配的行。

mysql_connect("localhost","root","");

mysql_select_db("androidapp");

$fname = mysql_real_escape_string($_POST['fname']);

$result = mysql_query("SELECT surname FROM names WHERE fname = '$fname'");

//if you want only one record then
$row = mysql_fetch_array($result);

echo json_encode($row);

mysql_close();

mysql_real_escape_string()永远记得使用 php 的函数转义任何 sql 注入的数据。我也更喜欢 HTTP POST。

从您的 android 应用程序中,您必须向 PHP 脚本所在的服务器发送一个 http 请求。

希望这对你有帮助

于 2012-04-11T12:25:45.233 回答
0

我不太确定你在用你的查询做什么,但我会使用

$fname = addslashes($_GET['fname']);
$sql = mysql_query("SELECT surname FROM Names WHERE fname='$fname'");
...

显然,您传入fname=whatever了查询。

GET 绝对没问题。HTTP 将 GET 请求指定为从服务器返回信息并且没有其他副作用(例如修改数据库)的请求。

于 2012-04-11T12:26:58.290 回答
-2

我猜你有一个 Android 应用程序(用 Java 编写),它与一种用 PHP 编码的 Web 服务进行通信。

因此,您的 PHP 应用程序应该像任何 Web 服务一样运行。

在 PHP 中,您可以使用 $_GET、$_POST 或 $_REQUEST 全局变量检索给脚本的参数。

  • $_GET 仅包含由 GET 方法发送的参数(直接在 URL 中)。

  • $_POST 仅包含 POST 方法发送的参数(嵌套在 http 查询中)。

  • $_REQUEST 是 $_GET + $_POST 的编译。

对于 Web 应用程序,$_REQUEST 通常是最好的解决方案,因此您允许调用者使用任何方法(POST/GET)。如果您只想修复一个,请选择 $_POST 或 $_GET。

所以,

$sql = mysql_query("SELECT surname WHERE firstname='".mysql_real_escape_string($_REQUEST['fname'])."'");

不要忘记转义参数mysql_real_escape_string()以防止 SQL 注入。

于 2012-04-11T12:36:05.693 回答