我是PHP编程的新手并且对此知之甚少,但我想用它来为我的客户端Android应用程序提供Web服务......
我开始使用PHP制作我的第一个Web服务并且它工作正常,但我想知道如何制作一个包含我需要的所有功能和方法以及如何从Android调用它的文件
谢谢
这是functions.php
<?php
function GetAllRest()
{
mysql_connect("localhost","root","root");
mysql_select_db("myhoteldb");
$sql=mysql_query("SELECT rest_id ,rest_name,cuisine,no_tables,bg_img,rest_logo FROM restaurant");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
}
function GetAllCategory($lang_id,$rest_id)
{
mysql_connect("localhost","root","root");
mysql_select_db("myhoteldb");
$sql=mysql_query("SELECT cat_lang.rowid ,cat_lang.cat_id as _id,lang_id, cat_name,cat_description from cat_lang ,menu_category WHERE lang_id= $lang_id AND restaurant= $rest_id ");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
}
?>
和网址 http://localhost/mywebservices.php?op=GetAllCategory&lang_id=1&rest_id=1
我现在收到此错误
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in
第22行的C:\ xampp \ htdocs \ functions.php
Notice: Undefined variable: output in C:\xampp\htdocs\functions.php on line 24
null
答案 0 :(得分:1)
作为一个想法,我建议在您的网址中包含所需的功能名称。 然后,获取该函数名称和参数,将它们传递给php的
call_user_func_array()
功能
这是函数处理程序的一个非常基本的概念:
您的请求网址如下所示:
http://www.mysite.com/webservice.php?op=CallFunctionOne¶m_a=test¶m_b=test2
以下是将调用路由到函数的处理程序:
require_once("./functions.php");
if(!empty($_SERVER["QUERY_STRING"])){
$query_str = stripslashes($_SERVER['QUERY_STRING']);
parse_str($query_str,$args);
$op = array_shift($args);
if(is_callable ($op)){
call_user_func_array($op,$args);
}
else{
echo "Handler error.<br />";
echo $op . " function is not callable.";
}
}
并且functions.php文件将包含您的功能。 希望它会给出一些想法。
答案 1 :(得分:1)
如果您了解PHP,那么我假设您将了解HTML。
PhoneGap允许您使用HTML,Javascript和CSS在andriod上运行应用程序。 http://phonegap.com/start
使用Javascript,您可以向您的网络php文件发出页面请求。
这是一个jQuery示例
<script>
$.ajax({
url: 'http://example.com/myfile.php',
dataType: 'json',
success: function(data) {
alert(data.rest_name); // do whatever you want with the json response
}
});
</script>
要启用跨域,您需要将其添加到php文件头中(不确定应用程序是否需要跨域验证)
header('Access-Control-Allow-Origin: *');