从mysqli获取数据时未定义变量


Undefined variable while fetching data from mysqli

我是新来的php n我正试图使电话到时区转换器。我在第49行得到错误未定义变量'$result'我怎么解决它?还有,如果你能找出我犯的其他错误请检查我犯的错误电话号码:

    <button type="submit" name="submit" action="submit">
        Submit
    </button>
</form>
    <?php
        $servername = "127.0.0.1";
        $username = "root";
        $password = "";
        $ccode=$_POST["phone"];
            // Create connection
            $db = new mysqli($servername, $username, $password);
            // Check connection
            if ($db->connect_error) {
                die("Connection failed: " . $db->connect_error);
            } 
        $pattern = '/^'(?['d]{1,4}')?( |-)?/';
        if(preg_match($pattern, $ccode, $matches))
        {
            $code = $matches[0];
        } else $code = substr($ccode, 0, 4);
        $q = "SELECT nicename FROM country.country WHERE phonecode=$code";
        if($query = $db->query($q)) 
        {
            $record = $query->fetch_assoc();
        } else echo "<br/>NO RECORD";
        echo '<pre>';print_r($record);
        if (empty($_POST["phone"]))
        {
            echo "<p>Please write a Phone Number!</p>";
        }
        $abb = "SELECT zone_id FROM zone INNER JOIN country on country.country_code = zone.country_code
                WHERE country.country_name = " . $record['nicename'];
        if($query = $db->query($abb)) 
        {
            $result = $query->fetch_assoc();
        } else echo "<br/>NO RECORD";
        echo '<pre>';print_r($result);
    ?>
</body>

谢谢你的帮助!

我相信这样可以。我不确定$code,如果他包含正确的信息,你可以通过回显$code来检查。

    if(preg_match($pattern, $ccode, $matches))
    {
        $code = $matches[0];
    } else { $code = substr($ccode, 0, 4); }
    $q = "SELECT nicename FROM country WHERE phonecode=$code";
    if($query = $db->query($q)) 
    {
        $record = $query->fetch_assoc();
        echo '<pre>';
        print_r($record);
    } else { echo "<br/>NO RECORD"; }

    $abb = "SELECT zone_id FROM zone INNER JOIN country on country.country_code = zone.country_code
            WHERE country.country_name = '" . $record['nicename'] . "'";
    if($query = $db->query($abb)) 
    {
        $result = $query->fetch_assoc();
        echo '<pre>';
        print_r($result);
        //Here $result will exist!
    } else { echo "<br/>NO RECORD"; }
    // You had your $result here, and here, the result may not exist, 
    // depending if the query succeeded or not.
    // Same counts for the query above.

据我所知有两个问题。

1是您试图打印$record,而$record可能不存在,并且对$result进行相同计数。

2是区域查询,如果您检查列/字段是否等于某个字符串,则确保字符串周围有引号。所以country_name =‘东西’。你没有在$record['nicename']周围加引号,所以不管$record['nicename']是什么,他都认为这是一个列/字段,而不是一个值。