php
  • mysql
  • database
  • 2015-10-15 47 views -4 likes 
    -4

    空给我让我的主页下面的错误。 “警告:mysqli_fetch_assoc()期望参数1是mysqli_result,null在”警告:mysqli_fetch_assoc()预计参数1被mysqli_result,在

    中给出。我尝试编辑一些东西,但它一直显示在我的首页上。有谁知道它是什么意思,我怎么能解决这个问题?

    $databaseDetect = mysqli_query($link, "SELECT * FROM `detectives` WHERE `status`='volgt'") or die(mysqli_error($link)); 
        while($itemDetect = mysqli_fetch_assoc($database)) { 
         if(strtotime($itemDetect['datum']) < time()) { 
          mysqli_query($link, "DELETE FROM `detectives` WHERE `id`='{$itemDetect['id']}'") or die(mysqli_error($link)); 
         } 
        } 
    

    谢谢你的问候。

    +1

    '$ databaseDetect == $数据库' –

    +5

    但是,为什么不只是有单一的DELETE语句,没有这一切的取得和循环....'DELETE FROM \'侦探\'WHERE \'状态\'= 'volgt' 和\'基准\'

    回答

    2

    你有一个变量名不匹配 - $数据库从来没有定义,因此为空,而不是结果。

    $database = mysqli_query($link, "SELECT * FROM `detectives` WHERE `status`='volgt'") or die(mysqli_error($link)); // <- this variable was misnamed in the original code, but is fixed here 
         while($itemDetect = mysqli_fetch_assoc($database)) { // <- and it is passed to mysqli_fetch_assoc() here, previously you were passing a variable that was null 
          if(strtotime($itemDetect['datum']) < time()) { 
           mysqli_query($link, "DELETE FROM `detectives` WHERE `id`='{$itemDetect['id']}'") or die(mysqli_error($link)); 
          } 
    } 
    

    编辑:另见Mark Ba​​ker对OP的评论。除非你有通过每个项目一个很好的理由循环,你在这里缩短了代码简洁,他的查询将有同样的结果,并会更快!

    DELETE FROM `detectives` WHERE `status` = 'volgt' and `datum` < NOW(); /* or date('Y-m-d H:i:s') if php time is different for some reason */ 
    
    +0

    嗯,我看到了,所以我怎么能改变这个?给我的$数据库一个随机资源可能会修复错误,但我怀疑它仍然是功能。这不完全是我的代码,我为我的学校项目这样做,这意味着我仍然在学习PHP,MySQL,HTML。如果有人能够解释我,我做错了什么将会非常有帮助。 –

    +0

    您已经在原始代码中获取数据库资源对象,您只是没有使用它。您会注意到,在原始代码中,该变量在第一行被定义为'$ databaseDetect',但是您再也不会引用它(您尝试将$ database传递给mysqli_fetch_assoc(),而$ database从未被定义过,因此'空'错误)。只要将该参考文献更改为正确的变量名称即可。 – rawb

    +0

    因此,从我的理解,我将$ database替换为$ databaseDetect?我现在明白了这个方面,如果一个变量没有被定义,它会给出NULL错误。这已经很有帮助。感谢大家的快速回复。我已经为我缺乏知识而道歉。 –

    相关问题