0

这是我在 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 是资源,数组在 C:\xampp\htdocs\job-skills\php\functions\user_unused_area_list.php 第 30 行 []

看不出有什么不对。谢谢

4

8 回答 8

3

将变量重命名$query3$query或不同于while loop.

您在线执行的操作while($query3 = mysql_fetch_assoc($query3))是:在第一次迭代时将结果分配mysql_fetch_assoc$query3(此时是资源),在第二次迭代时将$query3(已经是一个数组)传递给mysql_fetch_assoc.

注意: mysql_*函数已弃用。使用PDOmysqli_*

于 2012-10-04T11:51:37.550 回答
3

在这一行:

while($query3 = mysql_fetch_assoc($query3))

您正在重新分配$query3结果mysql_fetch_assoc

应该是这样的:

while($queryRes = mysql_fetch_assoc($query3))
于 2012-10-04T11:51:52.917 回答
3

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

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

while($result = mysql_fetch_assoc($query3)){
.....//Your code
}
于 2012-10-04T11:52:00.623 回答
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)) {
于 2012-10-04T11:52:02.417 回答
2

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

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

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

像这样替换你的行:

while($listOfUserAreas = mysql_fetch_assoc($query3)){
于 2012-10-04T11:51:05.203 回答
2

这是错误的:

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

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

对于这一行,您可以通过替换上述行来修复它:

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

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

于 2012-10-04T11:51:46.107 回答
2

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

while($query3 = mysql_fetch_assoc($query3))

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

于 2012-10-04T11:52:27.423 回答
1
while($query4 = mysql_fetch_assoc($query3)){

更改获取变量的名称

于 2012-10-04T11:55:31.370 回答