mysql_fetch_assoc()给出错误

时间:2012-10-04 11:48:26

标签: php mysql sql associative-array

这是我在php中查询的代码:

$query3 = mysql_query("SELECT * FROM area_of_work") or die('Invalid query:'. mysql_error());

while($query3 = mysql_fetch_assoc($query3)){
    $flag = true;
    foreach($listOfUserAreas as $obj){
        if($obj->areaId == $query3['id']){
            $flag = false;
            break;
        }  
    }
    if($flag){
        $areaObj = new AreaInfo();
        $areaObj->areaId = $query3['id'];
        $areaObj->areaName = $query3['areaOfWork'];
        $areaObj->areaTableName = $query3['tableName'];
        array_push($listOfUnusedAreas, $areaObj);
    }
}

我收到此错误:

  

警告:mysql_fetch_assoc()期望参数1是资源,第30行的C:\ xampp \ htdocs \ job-skills \ php \ functions \ user_unused_area_list.php中给出的数组   []

看不出有什么不对劲。 感谢

8 个答案:

答案 0 :(得分:3)

将变量$query3重命名为$query或与while loop中使用的变量不同的内容。

您在线执行的操作:while($query3 = mysql_fetch_assoc($query3))是您在第一次迭代时将mysql_fetch_assoc的结果分配给$query3(此时它是资源),并且在您传递$query3mysql_fetch_assoc 1}}(已经是一个数组)到mysql_*

注意: {{1}}函数已弃用。使用PDOmysqli_*

答案 1 :(得分:3)

在这一行:

while($query3 = mysql_fetch_assoc($query3))

您正在$query3重新分配mysql_fetch_assoc

的结果

应该是这样的:

while($queryRes = mysql_fetch_assoc($query3))

答案 2 :(得分:3)

不要使用相同的变量..尝试这样

$query3 = mysql_query("SELECT * FROM area_of_work") or die('Invalid query:'. mysql_error());

while($result = mysql_fetch_assoc($query3)){
.....//Your code
}

答案 3 :(得分:3)

你的问题在这里:

$query3 = mysql_query("SELECT * FROM area_of_work") or die('Invalid query:'. mysql_error());
while ($query3 = mysql_fetch_assoc($query3)) {

应该是这样的:

$q = mysql_query("SELECT * FROM area_of_work") or die('Invalid query:'. mysql_error());
while ($query3 = mysql_fetch_assoc($q)) {

答案 4 :(得分:2)

你的第一个循环可以正常工作,但你的第二个循环会失败:

while($query3 = mysql_fetch_assoc($query3)){

执行第一个循环后,您将结果数组分配给资源,有效地覆盖资源。

替换你的行:

while($listOfUserAreas = mysql_fetch_assoc($query3)){

答案 5 :(得分:2)

这是错误的:

while($query3 = mysql_fetch_assoc($query3)){

您正在使用相同的变量来读取,要分配给。

您可以通过替换上述行来解决此问题:

$result = &$query3;
while($query3 = mysql_fetch_assoc($result)){

只需更改这些行,其余代码就可以使用。

答案 6 :(得分:2)

您正在尝试将关联数组分配给资源

while($query3 = mysql_fetch_assoc($query3))

这是错误的...尝试使用不同的变量     while($ Result = mysql_fetch_assoc($ query3))

答案 7 :(得分:1)

while($query4 = mysql_fetch_assoc($query3)){

更改获取变量的名称