我正在尝试实现一个搜索活动,它根据搜索从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中显示姓氏
答案 0 :(得分: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();
始终记得使用php的mysql_real_escape_string()
函数转义任何sql注入的数据。 ans我也更喜欢HTTP POST。
从您的Android应用程序中,您必须向PHP脚本所在的服务器发送http请求。
希望这可以帮助你
答案 1 :(得分:0)
我不太确定你在查询中做了什么,但我会使用
$fname = addslashes($_GET['fname']);
$sql = mysql_query("SELECT surname FROM Names WHERE fname='$fname'");
...
显然,您在查询中传递了fname=whatever
。
GET绝对没问题。 HTTP将GET请求指定为从服务器返回信息并且没有其他副作用(例如修改数据库)的请求。
答案 2 :(得分:-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注入。