찾다
백엔드 개발PHP 튜토리얼Android+PHP+MYSQL 개발의 간단한 예시 설명

Android+PHP+MYSQL 개발의 간단한 예

얼마 전에 데이터베이스를 사용해야 하는 Android 프로젝트를 만들었는데, 이전에 웹 관련 내용을 작성한 적이 있어서 사용할 예정입니다. MYSQL+PHP는 황금 파트너이지만 다소 과잉입니다.

저는 진짜 초보자이고 Android에 대해 잘 모릅니다. 제가 이 블로그를 쓰는 이유는 제가 겪은 다양한 문제에 대한 해결책을 여러분과 공유하기 위해서입니다. 프로젝트입니다. 여러분, 이것이 도움이 되기를 바랍니다.

다음으로 Android 클라이언트가 PHP를 통해 MYSQL 데이터베이스와 상호 작용하는 방법을 세 가지 측면에서 소개하겠습니다.

개요

简单的说,安卓客户端通过Http向本地服务器发出请求,访问指定的php代码,服务器端通过php代码执行数据库的操作,
返回相应的JSON数据。服务器可以理解为运行着某些服务器容器的电脑,比如你的电脑安装了Apache并保持运行,那么电脑就变成了一台服务器,只是这台服务器没有入网,只能本地访问。安卓客户端通过HttpURLConnection向服务器中指定的php文件提交POST或GET请求,服务器端相应php代码接受来自客户端的参数(如果是带参传递)进行数据库的操作,返回JSON数据给客户端。
下面我以安卓客户端通过用户名密码登陆为例进行说明。具体为:客户端通过POST方法向服务器提交2个参数:用户名(username)和密码(password)到指定login.php文件(这个文件写登陆验证的php代码),该文件中通过查询数据库中是否存在该用户以及密码是否正确来返回客户端相应的JSON数据。
既然选择了PHP+MYSQL,那么使用wamp server套件是比较方便的一种选择,用过它的朋友都应该轻车熟路了。

1. Android 클라이언트

安卓客户端所做的工作有:通过HttpURLConnection向服务器中指定的login.php文件提交POST或GET请求,服务器端接受来自客户端的参数执行login.php文件进行数据库的操作,返回JSON数据给客户端。
这里只贴出代码部分,至于界面只需要2个文本编辑框edittext用于输入用户名密码,一个button登陆按钮,其id自行设置即可。
登陆按钮响应函数如下
        loginbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//登陆按钮监听事件
/*                ((App)getApplicationContext()).setTextData(et.getText().toString());
                location_x.setText(((App)getApplicationContext()).getTextData());*/
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            int result = login();
                            //login()为向php服务器提交请求的函数,返回数据类型为int
                            if (result == 1) {
                                Log.e("log_tag", "登陆成功!");
                                //Toast toast=null;
                                Looper.prepare();
                                Toast.makeText(PhpActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();
                                Looper.loop();
                            } else if (result == -2) {
                                Log.e("log_tag", "密码错误!");
                                //Toast toast=null;
                                Looper.prepare();
                                Toast.makeText(PhpActivity.this, "密码错误!", Toast.LENGTH_SHORT).show();
                                Looper.loop();
                            } else if (result == -1) {
                                Log.e("log_tag", "不存在该用户!");
                                //Toast toast=null;
                                Looper.prepare();
                                Toast.makeText(PhpActivity.this, "不存在该用户!", Toast.LENGTH_SHORT).show();
                                Looper.loop();
                            }
                        } catch (IOException e) {
                            System.out.println(e.getMessage());
                        }
                    }
                }).start();
            }
        });


登陆按钮响应函数中有个login()函数,这个函数就是完成向服务器提交申请并获取服务器返回json数据的功能。
    /*
    *用户登录提交post请求
    * 向服务器提交数据1.user_id用户名,2.input_pwd密码
    * 返回JSON数据{"status":"1","info":"login success","sex":"0","nicename":""}
    */
    private int login() throws IOException {
        int returnResult=0;
        /*获取用户名和密码*/
        String user_id=et.getText().toString();
        String input_pwd=pwd.getText().toString();
        if(user_id==null||user_id.length()<=0){
            Looper.prepare();
            Toast.makeText(PhpActivity.this,"请输入账号", Toast.LENGTH_LONG).show();
            Looper.loop();
            return 0;
        }
        if(input_pwd==null||input_pwd.length()<=0){
            Looper.prepare();
            Toast.makeText(PhpActivity.this,"请输入密码", Toast.LENGTH_LONG).show();
            Looper.loop();
            return 0;
        }
        String urlstr="http://192.168.191.1/LBS/login.php";
        //建立网络连接
        URL url = new URL(urlstr);
        HttpURLConnection http= (HttpURLConnection) url.openConnection();
        //往网页写入POST数据,和网页POST方法类似,参数间用‘&’连接
        String params="uid="+user_id+&#39;&&#39;+"pwd="+input_pwd;
        http.setDoOutput(true);
        http.setRequestMethod("POST");
        OutputStream out=http.getOutputStream();
        out.write(params.getBytes());//post提交参数
        out.flush();
        out.close();
        //读取网页返回的数据
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(http.getInputStream()));//获得输入流
        String line="";
        StringBuilder sb=new StringBuilder();//建立输入缓冲区
        while (null!=(line=bufferedReader.readLine())){//结束会读入一个null值
            sb.append(line);//写缓冲区
        }
        String result= sb.toString();//返回结果
        try {
            /*获取服务器返回的JSON数据*/
            JSONObject jsonObject= new JSONObject(result);
            returnResult=jsonObject.getInt("status");//获取JSON数据中status字段值
        } catch (Exception e) {
            // TODO: handle exception
            Log.e("log_tag", "the Error parsing data "+e.toString());
        }
        return returnResult;
    }

对于这个login()函数有几点说明:
1) urlstr="http://192.168.191.1/LBS/login.php"。其中192.168.191.1即本地电脑运行的Apache服务器的地址,这个地址会映射到Wamp安装目录下的WWW目录,LBS即为WWW目录下的文件夹。
一开始我使用android studio自带模拟器进行测试,网上说是浏览器访问10.0.2.0什么的就能访问电脑上的本地Apache服务器,但是没能成功访问wamp自带的apache服务器。
最后找到一个极好方法,就是使用真机测试,作为服务器的电脑需要安装一个wifi共享软件(如猎豹wifi),用要测试的真机连接该wifi后,手机浏览器访问http://192.168.191.1,如果显示
如下图则说明手机访问电脑apache服务器成功,至此服务器环境已经搭建成功。login.php是放在电脑的apache服务器下的,比如我的是在D:\wamp\www\LBS文件夹下。

2) HttpURLConnection。本人曾在网上找到过一些安卓网络请求的方法,但是大多都已弃用,使用HttpURLConnection是当前还未弃用的一种方法,当然对于高手来说,这就不值一提了。
3) JSONObject。

由于在后面的php代码中所返回的数据为json数据类型,所以需要在客户端进行解析,这并不困难,不清楚的可以搜索一下。
4)之前已经说过,本人对安卓一窍不通,所以在测试时犯了一个大忌,就是网络访问不能放在主线程中,否则会阻塞主线程,造成UI假死等错误,所以需要单开一个线程,即
登陆按钮响应函数中的run方法。
login.php在服务器容器中,时刻响应着外部的访问请求,主要工作是:
1)获取手机端通过Post请求发送的用户名密码。
2)连接数据库,从数据库中查找是否有与该用户名密码一致的记录,根据查找结果返回不同的Json数据。
3)Json数据是一种有效的客户端与服务器端的交互方式。
<?php  
/*
*用户登录,服务器进行的处理
*/
	include("conn.php");
    mysql_select_db("lbs");  
	$getid=$_POST[&#39;uid&#39;];//客户端post过来的用户名
	$getpwd=$_POST[&#39;pwd&#39;];//客户端post过来的密码
    $sql=mysql_query("SELECT * FROM user WHERE userid =&#39;$getid&#39;"); 
	$result=mysql_fetch_assoc($sql);
	if(!empty($result)){
		//存在该用户
		if($getpwd==$result[&#39;password&#39;]){
			//用户名密码匹配正确
			mysql_query("UPDATE user SET status=&#39;1&#39; WHERE id =$result[id]");/*这里的数组不需要加单引号*/
			$back[&#39;status&#39;]="1";
			$back[&#39;info&#39;]="login success";
			$back[&#39;sex&#39;]=$result[&#39;sex&#39;];
			$back[&#39;nicename&#39;]=$result[&#39;nicename&#39;];
			echo(json_encode($back)); 
		}else{/*密码错误*/
			$back[&#39;status&#39;]="-2";
			$back[&#39;info&#39;]="password error";
			echo(json_encode($back)); 
		}
	}else{
		//不存在该用户
		$back[&#39;status&#39;]="-1";
		$back[&#39;info&#39;]="user not exist";
		echo(json_encode($back)); 
	}
         
    mysql_close();  
?>

2 서버측

<?php
	error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
     $conn=mysql_connect("localhost","root","admin") or die("数据库服务器连接错误".mysql_error());
     mysql_select_db("mylocation",$conn) or die("数据库访问错误".mysql_error());
     
	 mysql_query("SET NAMES &#39;utf8&#39;");
?>
rrreeerrreeerrreeerrreeerrreeerrreee

어디에 있나요? n.php는 데이터베이스 연결 파일이며 코드는 다음과 같습니다.

rrreee

3. MYSQL 데이터베이스

데이터베이스의 경우, 위 PHP 코드에 따르면 데이터베이스에 userid, 비밀번호, nicename, sex. 직접 만들 수 있습니다(이 예에서는 nicename 및 sex가 사용되지 않음). 스크린샷은 다음과 같습니다

위 작업이 완료된 후 테스트를 위해 클라이언트를 실제 머신에 배포합니다

사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하면 결과는 다음과 같습니다:

4. 요약:

이 기사에서 말하는 내용은 php을 Android와 결합하는 가장 간단한 예일 뿐입니다. Sina Weibo 클라이언트 등 이 모델을 사용하는 프로젝트에 관심이 있는 독자는 "Android+PHPBest Practices"와 같은 관련 정보와 데이터를 확인할 수 있습니다. 많은 선배님들의 블로그 글을 통해 많은 것을 배웠으니 여기와 학습 경험을 공유해 주시기 바라며, 글에 틀린 부분이 있으면 비판과 정정을 환영합니다.

주요 소스 코드

PS: CSDN은 언제 자체 텍스트 편집 도구를 더 쉽게 사용할 수 있게 만들까요?

이 글에서는 Android+PHP+MYSQL 개발의 간단한 예를 설명합니다. 더 많은 관련 내용을 보려면 php 중국어 웹사이트를 참고하세요.

관련 권장사항:

PHP에서 $this의 사용법에 대한 자세한 설명

Java와 PHP의 관계

PHP에서의 실제 경험 요약

위 내용은 Android+PHP+MYSQL 개발의 간단한 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 지속적인 사용 : 지구력의 이유PHP의 지속적인 사용 : 지구력의 이유Apr 19, 2025 am 12:23 AM

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP 및 Python : 유사점과 차이점을 탐구합니다PHP 및 Python : 유사점과 차이점을 탐구합니다Apr 19, 2025 am 12:21 AM

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP와 Python : 다른 패러다임이 설명되었습니다PHP와 Python : 다른 패러다임이 설명되었습니다Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python : 그들의 역사에 깊은 다이빙PHP와 Python : 그들의 역사에 깊은 다이빙Apr 18, 2025 am 12:25 AM

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP와 Python 중에서 선택 : 가이드PHP와 Python 중에서 선택 : 가이드Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP 및 프레임 워크 : 언어 현대화PHP 및 프레임 워크 : 언어 현대화Apr 18, 2025 am 12:14 AM

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

PHP의 영향 : 웹 개발 및 그 이상PHP의 영향 : 웹 개발 및 그 이상Apr 18, 2025 am 12:10 AM

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경