Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL选择不返回资源_Php_Javascript_Mysql - Fatal编程技术网

Php MySQL选择不返回资源

Php MySQL选择不返回资源,php,javascript,mysql,Php,Javascript,Mysql,我的PHP MySQL Select有一个小问题。该函数位于PHP类内部。以下是我得到的错误: 警告:mysql_fetch_数组期望参数1是资源, 第59行C:\xampp\htdocs\include\database.php中给出的整数 警告:extract要求参数1为数组,在中为空 第59行的C:\xampp\htdocs\include\database.php 该功能只是简单地更新数据库,以显示他们访问站点时使用的浏览器和操作系统。该函数从另一个文件调用,该文件由AJAX调用调用,该

我的PHP MySQL Select有一个小问题。该函数位于PHP类内部。以下是我得到的错误:

警告:mysql_fetch_数组期望参数1是资源, 第59行C:\xampp\htdocs\include\database.php中给出的整数 警告:extract要求参数1为数组,在中为空 第59行的C:\xampp\htdocs\include\database.php

该功能只是简单地更新数据库,以显示他们访问站点时使用的浏览器和操作系统。该函数从另一个文件调用,该文件由AJAX调用调用,该调用使用POST发送从Javascript文件收集的有关操作系统和浏览器的数据。只有当数据库中已有IP地址条目时,才会失败。如果数据库中没有IP地址条目,则会成功创建一个

这是我的密码:

function addStat($browser, $os){
    $IE = 0; $Firefox = 0; $Safari = 0; $Opera = 0; $Chrome = 0; $otherb = 0;
    $Windows = 0; $Linux = 0; $Mac = 0; $Android = 0; $iOS = 0; $otheros = 0;
    $ql = 0; $totalVisits = 0;
    $ip = ip2long($_SERVER['REMOTE_ADDR']);
    $q1 = mysql_query("SELECT * FROM " . DB_STATS . " WHERE ip='$ip'", $this->connection);
    if (mysql_num_rows($q1)==0){
        $browser = mysql_real_escape_string($browser);
        $os = mysql_real_escape_string($os);
        switch($browser){
            case "Internet Explorer":
                $IE += 1;
            break;
            case "Firefox":
                $Firefox += 1;
            break;
            case "Safari":
                $Safari += 1;
            break;
            case "Opera":
                $Opera += 1;
            break;
            case "Chrome":
                $Chrome += 1;
            break;
            default:
                $otherb += 1;
            break;
        }
        switch($os){
            case "Windows":
                $Windows += 1;
            break;
            case "Mac OS X":
                $Mac += 1;
            break;
            case "Linux":
                $Linux += 1;
            break;
            case "Android":
                $Android += 1;
            break;
            case "iOS":
                $iOS += 1;
            break;
            default:
                $otheros += 1;
            break;
        }
        $q = $this->query("INSERT INTO " . DB_STATS . " VALUES (null, '$ip', '$Chrome', '$IE', '$Firefox', '$Opera', '$Safari', '$otherb', '$Windows', '$Mac', '$Linux', '$Android' , '$iOS' , '$otheros', 1)");
        if ($q == true){
           return(1);
        }
        else{
           return(0);
        }
    }
    else if (mysql_num_rows($q1)==1){
        extract(mysql_fetch_array($ql));
        switch($browser){
            case "Internet Explorer":
                $IE += 1;
            break;
            case "Firefox":
                $Firefox += 1;
            break;
            case "Safari":
                $Safari += 1;
            break;
            case "Opera":
                $Opera += 1;
            break;
            case "Chrome":
                $Chrome += 1;
            break;
            default:
                $otherb += 1;
            break;
        }
        switch($os){
            case "Windows":
                $Windows += 1;
            break;
            case "Mac OS X":
                $Mac += 1;
            break;
            case "Linux":
                $Linux += 1;
            break;
            case "Android":
                $Android += 1;
            break;
            case "iOS":
                $iOS += 1;
            break;
            default:
                $otheros += 1;
            break;
        }
        $totalVisits += 1;
        $q = $this->query("UPDATE " . DB_STATS . " set Chrome='$Chrome', IE='$IE', Firefox='$Firefox', Opera='$Opera', Safari='$Safari', otherb='$otherb', Windows='$Windows', Mac='$Mac', Linux='$Linux', Android='$Android' , iOS='$iOS' , otheros='$otheros', totalVisits='$totalVisits'");
        if ($q == true){
           return(1);
        }
        else{
           return(0);
        }
    }
    else{
        return(-1);
    }
}
我希望一切都有意义,希望有人能帮助我。

我现在明白了-当您打算使用$q1时,您使用了$ql小写字母L。这是一堂反对使用非常短的变量名或非常相似的名称的课

// $ql was initialized to 0
$ql = 0; $totalVisits = 0;

// $q1 holds the result resource
extract(mysql_fetch_array($q1));
不建议对mysql\u fetch\u数组的输出调用extract,除非还指定第二个参数mysql\u ASSOC作为fetch类型。默认情况下,它为每列返回数字索引和关联索引

extract(mysql_fetch_array($q1, MYSQL_ASSOC));
// Or better
extract(mysql_fetch_assoc($q1));
一般来说,我可能会建议在大多数情况下都不要使用extract,因为它会导致大量变量转储到全局名称空间中,特别是当您完成SELECT*而没有具体说明选择了哪些列时。最好通过阵列访问它们:

$row = mysql_fetch_assoc($q1);
echo $row['browser'];

您需要在mysql\u查询之后检查错误。如果$q1{echo mysql_error;}我在发布之前已经做过了,没有出现错误,但仍然没有,我不知道为什么。可能是重复的哦哇!非常感谢。Win7上的记事本++使1和ls看起来完全相同!:我会尽快将您的答案标记为正确答案:好的,我会将MYSQL\u ASSOC添加到MYSQL\u fetch\u数组+1中。这就是为什么编码器应该使用描述性变量名的一个很好的原因,但它给出了一个关于它的线索。不要责怪记事本++,它是一个相当不错的编辑器。是您选择的字体使1和ls看起来相同。你可能应该换一个不同的。我使用AnonymousPro,但是如果你搜索一下,你会发现很多好的编程字体。找一个看起来不错的,有助于区分相似字符的。