PHP脚本基于mysql表的第一列单元获取单元格

时间:2012-04-11 12:14:30

标签: java php android mysql

我正在尝试实现一个搜索活动,它根据搜索从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中显示姓氏

3 个答案:

答案 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注入。