Rumah pembangunan bahagian belakang tutorial php PHP中echo语句滥用详解

PHP中echo语句滥用详解

Mar 13, 2018 am 10:17 AM
echo php Penjelasan terperinci

首先简要介绍一下我的程序的结构以及要实现的功能: 简而言之,该程序主要功能是实现将已知地址经纬度的某个点在地图上在地图上显示出来,程序主要分为三个模块:分别是 前端(html+css+js)、后台(php)、数据库(mysql),三模块分别实现下列功能。
数据库:存储某个地点的经纬度信息(因为所做项目要求显示的是公司某个硬件设备的所在地,所以,我称之为——设备地址);
后台:本后台实现的功能主要是通过sql语句查询到数据库里满足条件的设备的地址信息(经纬度),然后将这些地址信息以json格式输出,让前端页面可以通过ajax方式获取到;

//后台代码:<?phpsession_start();//查找数据库header ( "Content-type:text/html;charset=utf-8" );include "conn.php";
mysql_query("set names utf8");//读取旧信息$startTime = date("Y-m-d H:i:s", strtotime(&#39;-300 minutes&#39;, time()));$UserName = $_SESSION[&#39;UserName&#39;];//echo $UserName ;//$UserName = &#39;wld&#39;;$sql = "select * from user_device where UserName=&#39;".$UserName."&#39; and UseFlag=1";$result_set = mysql_query($sql);$snstr=0;$longstr=0;$lastr=0;$statusstr=0;    while($row=mysql_fetch_array($result_set)){            $sql = "select * from device where  SN=&#39;".$row[&#39;SN&#39;]."&#39;";            $res = mysql_query($sql);            $result=mysql_fetch_assoc($res);        /////////////////////////在线监测/////////////////////  
        $sql_queryt="SELECT * FROM device_online_list WHERE SN=&#39;".$SN."&#39;  order by Time desc limit 1";        $result_sett=mysql_query($sql_queryt);        $resultt=mysql_fetch_assoc($result_sett);        if($result_sett)
        {   
            if(strtotime($startTime)<strtotime($resultt[&#39;Time&#39;]))
            {   
                    $runstr=1;
            }            else $runstr=0;
        }else $runstr=0;    ///////////////////////////////////////////////////////
            if($snstr){            $snstr=$snstr.&#39;_&#39;;            $snstr=$snstr.$row[&#39;SN&#39;];            $longstr=$longstr.&#39;_&#39;;            $longstr=$longstr.$result[Longtitude];            $lastr=$lastr.&#39;_&#39;;            $lastr=$lastr.$result[Latitude];            $statusstr=$statusstr.&#39;_&#39;;            $statusstr=$statusstr.$runstr;
            }else{                $snstr=$row[&#39;SN&#39;];                $longstr=$result[Longtitude];                $lastr=$result[Latitude];                $statusstr=$runstr;
            }
    }$resultJson = array("SNstr"=>$snstr, "Long"=>$longstr, "La"=>$lastr,"Status"=>$statusstr);//json格式的数组echo urldecode(json_encode($resultJson));//Json格式输出 */?>
Salin selepas log masuk

前端:前端的主要功能是,通过调用百度地图api,显示一张地图,并将通过js(ajax)从后台获取的经纬度信息作为位置参数填入地图描点函数里,实现在地图上显示某个点的功能(当然,我的代码里从后台获取的信息并不只有经纬度,但因为是一个地图程序,关注焦点主要在经纬度上,所以阐述过程中只提经纬度,忽略其他信息);

//下面是前端代码:<!DOCTYPE html><html lang="en"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>设备地图</title>
   <style type="text/css">
        body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
        #dev_map{height:500px;width:100%;}
    </style> 
    <script type="text/javascript" src="jquery-1.12.1.js"></script> 
    <script type="text/javascript" src="http://api.map.baidu.com/api?&v=1.3"></script></head><body><p class="dev_map" id="dev_map"></p><!-- <p><button type="button" onclick="theLocation()">设备地图</button></p> --></body></html><script>var map = new BMap.Map("dev_map");    // 创建Map实例map.centerAndZoom(new BMap.Point(114.317, 30.594), 5);  // 初始化地图,设置中心点坐标和地图级别//添加地图类型控件map.addControl(new BMap.MapTypeControl({
    mapTypes:[
        BMAP_NORMAL_MAP,
        BMAP_HYBRID_MAP
    ]}));     
map.setCurrentCity("武汉");          // 设置地图显示的城市 此项是必须设置的map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放var arr_longitude = new Array();var arr_latitude = new Array();var arr_sn = new Array();var arr_status = new Array();var arr_point = new Array();var mapSpots = new Array;var url = "http://image.tupian114.com/20140419/09274112.png";var content;var myIcon = new BMap.Icon(url, new BMap.Size(40,30));var opts = {
                width : 180,     // 信息窗口宽度
                height: 180,     // 信息窗口高度
                title : "信息窗口" , // 信息窗口标题
                enableMessage:true//设置允许信息窗发送短息
               };// //获取经纬度  
  $(function()
  {
    $.ajax({
                url: "mysql.search.handle.php",
                type: "GET",
                dataType:"json",
                async:false,
                success:function(data)
                {   //alert(data.Long.split("_").length);
                    for(var i=0;i<data.Long.split("_").length;i++)
                    {
                        arr_longitude[i]=data.Long.split("_")[i];
                        arr_latitude[i] = data.La.split("_")[i];
                        arr_sn[i] = data.SNstr.split("_")[i];
                        arr_status[i] = data.Status.split("_")[i];
                        arr_point[i] = new BMap.Point(arr_longitude[i],arr_latitude[i]);                    //  marker = new BMap.Marker(arr_point[i]);
                    //  map.addOverlay(marker);
                    }
                    addSpots(data.Long.split("_").length);
                }
                });
 }); function addSpots(arr_length){
 alert("您有"+arr_length+"台设备!");     for(var i=0;i<arr_length;i++)
         {
            content = "";
            content = "<p><span>SN码:" + arr_sn[i] + "</span></br>" +                             "<span>设备状态:" + translateOnline(arr_status[i]) + "</span></br>" +                             "<p class=&#39;btn&#39;><a href=&#39;../DevAlarm/DevAla.html?SN=" + arr_sn[i] + "&#39; target=&#39;fname&#39;"
                             + "&#39;>报警配置</a></p>" +"<p class=&#39;btn&#39;><a href=&#39;../DevAlarmView/DevAlarmView.html?SN=" + arr_sn[i] + "&#39; target=&#39;fname&#39;"
                             + "&#39;>报警信息</a></p>"+"<p class=&#39;btn&#39;><a href=&#39;../DevRun/DevRun.html?SN=" + arr_sn[i] + "&#39; target=&#39;fname&#39;"
                             + "&#39;>实时数据</a></p>"+"<p class=&#39;btn&#39;><a href=&#39;../history/history.html?SN=" + arr_sn[i] + "&#39; target=&#39;fname&#39;"
                             + "&#39;>历史数据</a></p>"+"<p class=&#39;btn&#39;><a href=&#39;../DevCfg/DevCfg.html?SN=" + arr_sn[i] + "&#39; target=&#39;fname&#39;"
                             + "&#39;>数据可视与报警开关配置</a></p>";
            marker = new BMap.Marker(arr_point[i]);
            map.addOverlay(marker);            //var lable =  new BMap.Label(content,{offset:new BMap.Size(20,-10)});
            //marker.setLabel(lable);
            addClickHandler(content,marker); //添加点击处理程序(点击会出现sn码等信息)
         }
 }function addClickHandler(content,marker){
    marker.addEventListener("click",function(e){
        openInfo(content,e)}
    );
}function translateOnline(code){
    if (code == 0) {return "离线";}    else if(code == 1) {return "在线";}    else{return "error";}
}function openInfo(content,e){
    var p = e.target;    var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);    var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象 
    map.openInfoWindow(infoWindow,point); //开启信息窗口}</script>
Salin selepas log masuk

这里我们只关注js部分的代码,在下面把这些关键代码重新贴出来方便观看:

var arr_longitude = new Array();var arr_latitude = new Array();var arr_sn = new Array();var arr_status = new Array();var arr_point = new Array();var mapSpots = new Array;var url = "http://image.tupian114.com/20140419/09274112.png";var content;var myIcon = new BMap.Icon(url, new BMap.Size(40,30));var opts = {
                width : 180,     // 信息窗口宽度
                height: 180,     // 信息窗口高度
                title : "信息窗口" , // 信息窗口标题
                enableMessage:true//设置允许信息窗发送短息
               };// //获取经纬度  
  $(function()
  {
    $.ajax({
                url: "mysql.search.handle.php",
                type: "GET",
                dataType:"json",
                async:false,
                success:function(data)
                {   
            //  alert(data.Status);//弹出接收到的数据,调试用
            //  alert(data.La);//弹出接收到的数据,调试用
            //  alert(data.SNstr);//弹出接收到的数据,调试用
            //  alert(data.Long.split("_").length);//split是实现从一串用特定符号来连接的字符串中一次提取有用字符的功能(如me_you_he 用‘_’连接,用split可实现对me、you、he进行提取)
                    var longstring=data.Long+&#39;&#39;;                    var lastring=data.La+&#39;&#39;;                    var SNstring=data.SNstr+&#39;&#39;;                    var Statusstring=data.Status+&#39;&#39;;                    for(var i=0;i < longstring.split("_").length;i++)
                    {
                        arr_longitude[i]=longstring.split("_")[i];
                        arr_latitude[i] = lastring.split("_")[i];
                        arr_sn[i] = SNstring.split("_")[i];
                        arr_status[i] = Statusstring.split("_")[i];                    //  alert("设备状态"+arr_status[i]);
                        arr_point[i] = new BMap.Point(arr_longitude[i],arr_latitude[i]);
                        marker = new BMap.Marker(arr_point[i]);
                        map.addOverlay(marker);
                    }
                    addSpots(longstring.split("_").length);
                } ,
                error: function(XMLHttpRequest, textStatus, errorThrown) {//这个error函数调试时非常有用,如果解析不正确,将会弹出错误框                alert(XMLHttpRequest.responseText); 
                    alert(XMLHttpRequest.status);
                    alert(XMLHttpRequest.readyState);
                    alert(textStatus); // parser error;
                }
                });
 });
Salin selepas log masuk

在最初写代码过程中,后台因为调试程序的需要,在程序中echo了很多调试信息,如图:

这里写图片描述

,但是这些信息并不是json格式的,当这些非json格式的信息被echo后,会被前台接收到。但前台的ajax是指定以json格式接收的,所以当接收到非json格式的文件后,ajax程序不会进入success里执行,而是进入error里弹出错误信息,同时,浏览器会根据种类不同弹出诸如:
XML错误:找不到根目录(火狐firefox)、flie could not be load :……(谷歌chrome)等错误。


经验教训:当后台通过json格式输出数据以供前台get时,切记,除了echo输出有用数据时,不可用echo输出其他一切无用数据,否则会造成前台数据接收格式出错。


以上为本人做项目过程中的一点小经验,如有谬误,请批评指正!、

相关推荐:

基于php中echo用逗号和用点号的区别详解

php输出一个或多个字符串函数echo

php 中echo和print的区别你知道吗?

Atas ialah kandungan terperinci PHP中echo语句滥用详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1255
24
PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP vs Python: Memahami Perbezaan PHP vs Python: Memahami Perbezaan Apr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyata PHP dalam Tindakan: Contoh dan aplikasi dunia nyata Apr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Relevannya PHP: Adakah ia masih hidup? Relevannya PHP: Adakah ia masih hidup? Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP vs Bahasa Lain: Perbandingan PHP vs Bahasa Lain: Perbandingan Apr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

See all articles