变量在PHP中无法识别

时间:2014-11-03 11:13:38

标签: php mysql undefined

我正在尝试使用此处提供的php api:https://forums.digitalpoint.com/threads/uk-post-code-distance-calculator-using-php-mysql-3-super-easy-steps.1823109/。代码中有一些问题我必须修复,但我不知道为什么会出现这个错误。

这是config.php文件:

        <?php
        include('/config.php');
        /*
         * Created on May 20, 2010
         *
         * Programmed by Manoj Kumar
         */

        //Connect To Database
        $host_sql = $host;
        $username_sql = $username;
        $password_sql = $password;
        $dbname_sql = $dbname;


        $con = mysqli_connect($host_sql, $username_sql, $password_sql, $dbname_sql);

        ?>

这是distCalc.php文件

        <?php
        /*
         * Created on Jun 1, 2010
         *
         * To change the template for this generated file go to
         * Window - Preferences - PHPeclipse - PHP - Code Templates
         */

         include('/api/postcodedistance/config.php');


         //distCalc("NW4 4TE","ZE3 8HB");

         function distCalc($pc1_full,$pc2_full) {


         #Convert the post code to upper case and trim the variable
        $pc1_full = strtoupper(trim($pc1_full));

        #Remove any spaces
        $pc1_full = str_replace(" ","",$pc1_full);

        #Trim the last 3 characters off the end
        $pc1 = substr($pc1_full,0,strlen($pc1_full)-3);

        #Convert the post code to upper case and trim the variable
        $pc2_full = strtoupper(trim($pc2_full));

        #Remove any spaces
        $pc2_full = str_replace(" ","",$pc2_full);

        #Trim the last 3 characters off the end
        $pc2 = substr($pc2_full,0,strlen($pc2_full)-3);



         $sql="SELECT * FROM `hwz_postcodes` WHERE `outcode` = '$pc1'";
         $result=mysqli_query($con, $sql);
         $row=mysqli_fetch_array($result);

         $pc1_lat=$row['latitude'];
         $pc1_long=$row['longitude'];


         $sql="SELECT * FROM `hwz_postcodes` WHERE `outcode` = '$pc2'";
         $result=mysqli_query($con, $sql);
         $row=mysqli_fetch_array($result);

         $pc2_lat=$row['latitude'];
         $pc2_long=$row['longitude'];

         //echo "<br/>".$pc1."<br/>  ".$pc1_lat."<br/>  ".$pc1_long;
         //echo "<br/>".$pc2."<br/>  ".$pc2_lat."<br/>  ".$pc2_long;

         $distance = getDistance($pc1_lat, $pc1_long, $pc2_lat, $pc2_long);

        //echo "<br/>Distance:".$distance;

        return $distance;

         }


         function getDistance($lat1, $long1, $lat2, $long2){

        #$earth = 6371; #km change accordingly
        $earth = 3960; #miles

        #Point 1 cords
        $lat1 = deg2rad($lat1);
        $long1= deg2rad($long1);

        #Point 2 cords
        $lat2 = deg2rad($lat2);
        $long2= deg2rad($long2);

        #Haversine Formula
        $dlong=$long2-$long1;
        $dlat=$lat2-$lat1;

        $sinlat=sin($dlat/2);
        $sinlong=sin($dlong/2);

        $a=($sinlat*$sinlat)+cos($lat1)*cos($lat2)*($sinlong*$sinlong);

        $c=2*asin(min(1,sqrt($a)));

        $d=round($earth*$c);

        return $d;

        }


        ?>

这是我得到的错误:

Notice: Undefined variable: con in C:\Users\Kabeer\Dropbox\Projects\project\api\postcodedistance\distCalc.php on line 38

定义了Con,所以我很困惑这个问题是什么。如果我使con全局,那么我得到一个解析错误。我是这样做的:

global $con = mysqli_connect($host_sql, $username_sql, $password_sql, $dbname_sql);

非常感谢

卡比尔

2 个答案:

答案 0 :(得分:1)

在您的函数中添加global关键字:

function distCalc($pc1_full,$pc2_full) {
    global $con;
    //...
}

在您创建该连接之前:

global $con;
$con = mysqli_connect($host_sql, $username_sql, $password_sql, $dbname_sql);

答案 1 :(得分:1)

只需将global $con放入您的功能中。