2012-04-11 40 views
-1

我正在尝试实现一个搜索活动,它从基于搜索的mysql表中获取数据。PHP脚本获取基于mysql表的第一列单元的单元格

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

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

PHP script远:

<?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

+2

我从你的问题中了解的东西的数量太低了!说真的,我什么也没有理解,请重新解释你的问题,更好地解释你有什么,以及你想要达到什么。 – 2012-04-11 12:16:49

+0

请勿使用mysql_ *函数!它们在所有名称中都被弃用,但与MySQL不完全兼容5 – GordonM 2012-04-11 12:21:40

+0

我已更新它,希望它更有意义? – 2012-04-11 12:22:11

回答

0

我假设你想发送和从PHP接收数据到Java(显示姓android)通过http post或http get。纠正我,如果我错了。

基本上你想让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注入的数据。另外我更喜欢HTTP POST。

从您的android应用程序,你将不得不发送一个http请求到PHP脚本所在的服务器。

希望这可以帮助你

0

我不太清楚你与你的查询做什么,但我会用

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

显然,在查询通过fname=whatever

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

-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'])."'"); 

不要忘记为了从SQL注入,以防止mysql_real_escape_string()逃跑的参数。

+1

$ _REQUEST是非常危险的,不要使用它!如果你不知道它来自哪里,你不能相信输入。 – GordonM 2012-04-11 13:32:14

+0

$ _REQUEST只包含$ _GET + $ _POST($ _COOKIES不在PHP 5.3中的默认配置中)。你说过:“如果你不知道输入是从哪里来的,你就不能相信输入”,但实际上一个Web应用根本不能相信输入,你不知道它来自哪里,因为基本的认知者可以改变输入,因为他祝愿。因此,您的应用程序必须检查服务器端的数据。所以你错了,$ _REQUEST没有比$ _GET,$ _POST更危险(只有在非常特殊的情况下以及包含cookie的时候)或者给我一个你断言的例子。 – Skrol29 2012-04-11 19:37:21

+0

仅仅因为它默认关闭并不意味着你可以依靠它关闭。事实上恰恰相反。当涉及到安全性时,你必须始终假设最差。举个例子,http://www.suspekt.org/2008/10/01/php-53-and-delayed-cross-site-request-forgeriesh劫持/除此之外,依赖于$ _REQUEST的web应用程序可以不是RESTful。 – GordonM 2012-04-11 20:07:01

相关问题