我忙于处理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中的函数名必须是字符串
答案 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所说,你试图使用圆括号访问数组,圆括号用于将数据传递给函数。使用方括号访问数组元素!