未定义的变量:query& mysql_fetch_assoc()期望参数1为resource,null为null

时间:2015-09-25 10:50:24

标签: php

我忙于处理php中的待办事项列表,但我现在卡在错误代码中注意:未定义的变量:C:\ xampp \ htdocs中的查询\ To-do \ Includes \ add-第14行的task.php

警告:mysql_fetch_assoc()期望参数1为资源,在第14行的C:\ xampp \ htdocs \ To-do \ Includes \ add-task.php中给出null

以下是我的代码:

的index.php

<html>
<head>
  <title>Simple to-Do List</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div class="wrap">
    <div class="task-list">
      <ul>
        <?php
        require ("includes/connect.php");

$query = mysql_query("SELECT * FROM tasks ORDER BY date ASC, time ASC");
$numrows = mysql_num_rows($query);

if ($numrows>0){
while ($row = mysql_fetch_assoc ($query) ) {

  $task_id = $row('id');
  $task_name = $row ('task');

  echo '<li>
                     <span>'.$task_name.'</span>
         <img id="'.$task_id.'" class="delete-button" width="10px" src="images/close.svg" />
      </li>';

}
 }


        ?>
      </ul>
  </div>
  <form class ="add-new-task" autocomplete="off">
    <input type="text" name="new-task" placeholder="Add a new item..." />
  </form>
</div>
</body>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
add_task();
delete_task();

function add_task() {
$('.add-new-task').submit (function() {
var new_task = $('.add-new-task input [name=new-task]') .val();

if (new_task != '') {
  $.post ('includes/add-task.php', {task: new_task}, function (data){
    $('.add-new-task input [name=new-task]').val('');
    $(data).appendTo('.task-list ul').hide().fadeIn();
  });
}
return false;
});

}

function delete_task() {
        $('.delete-button').click(function(){
      var current_element = $(this);
      var id = $(this).attr('id');

      $.post('includes/delete-task.php', { task_id: id }, function() {
    current_element.parent().fadeOut("fast", function() { $(this).remove(); });
     });
        });
    }
</script>
</html>

附加task.php

<?php
if (isset($_POST['task']))
$task = strip_tags ($_POST['task'] );
$date = date ('Y-m-d');
$time = date ('H:i:s');

require ("connect.php");
if(!empty ($task))
mysql_query("INSERT INTO tasks VALUES ('','$task, '$date', '$time')");

if(!empty ($task))
$query = mysql_query("SELECT * FROM tasks WHERE task='$task' and date='$date' and time='$time'");
  if(empty ($query))
while ($row = mysql_fetch_assoc($query) ) {
  $task_id = $row ['id'];
  $task_name = $row['task'];

  echo '<li><span>'.$task_name.'</span><img id="'.$task_id.'" class="delete-button" width="10px" src="images/close.svg" /></li>';

}

mysql_close();





 ?>

如果我在phpmyadmin中插入一个表是这个错误:

  

致命错误:第19行的C:\ xampp \ htdocs \ To-do \ index.php中的函数名必须是字符串

2 个答案:

答案 0 :(得分:2)

add-task.php的第11行正在检查$ query是否为空。

mysql_query会在成功时返回资源,如果没有找到&#39; SELECT&#39;的结果,则返回FALSE声明。所以你应该检查$ query是否为false,而不是它是否为空。

此外,您正在获取&#39;功能名称必须是字符串&#39;因为在第19行,你有&#39; $ task_id = $ row(&#39; id&#39;);&#39;

在PHP中,您可以使用方括号访问数组元素,因此我认为您打算执行$ task_id = $ row [&#39; id&#39;]。您使用括号将参数传递给函数,因此解释器认为您正在尝试调用函数

答案 1 :(得分:1)

因此。这些代码行是什么意思?

if(!empty ($task))
$query = mysql_query("SELECT * FROM tasks WHERE task='$task' and date='$date' and time='$time'");

它们意味着如果变量task不为空,变量query将获得SQL语句返回的值。请注意,query之前从未在代码中初始化,因此如果此测试失败(即task为空)将永远不会创建它,如果由于某种原因的SQL语句没有&#它将为null 39; t返回您正在寻找的数据。

行。然后。这些代码行是什么意思?

if(empty ($query))
while ($row = mysql_fetch_assoc($query) ) {

它们意味着如果query为空(例如...... Null?不存在?),将执行while语句。它做了什么?它使用query

总结一下,你这样做:如果变量query不存在,你可以使用它。

因此有两个错误,因为您无法将不存在或空的变量传递给mysql_fetch_assoc函数。

编辑:我没有注意到最后一个错误。 就像user1614986所说,你试图使用圆括号访问数组,圆括号用于将数据传递给函数。使用方括号访问数组元素!