我在这个上花了几个小时没有运气。我正在尝试删除标有复选框并按下删除按钮的列表元素。每个复选框都有一个与实际 ID 列值相关的 html id 属性。我正在使用 MySQL 语句根据适当的 id 删除行(我可以从 html 中删除元素,但不能从 MySQL 表中删除)
"DELETE FROM todolist WHERE ID IN (".$_GET['id'].")"
例如 id...id="456,444,454"
javascript 通过并找到复选框的 id 值并将它们发送到 php 文件。这部分很好。从警报声明中,我可以验证它提供了正确的 ID。这是按下删除按钮时调用的方法。
function removeCheckedTask(){
var checkBoxes = $('toDoList').getElementsByClassName('box');
var deletedID = new Array(); var indexID =0;
for (var i = 0; i < checkBoxes.length; i++) {
if (checkBoxes[i].checked){
deletedID[indexID]=checkBoxes[i].getAttribute('id');indexID++;
var par = checkBoxes[i].parentNode;
$('toDoList').removeChild(par);
i--;
for(var a=i+1; a<checkBoxes.length; a++){//moves other elements
par = checkBoxes[a].parentNode;
par.style.top = (a*40)+"px";
}
}
}
if(deletedID.length>0){
$('message').innerHTML = "Just a second..."
// Set te random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
var ids = 'id='+deletedID[0];
for(var i=1; i<deletedID.length; i++){
ids+= ',' + deletedID[i];
}
alert('removeTasks.php?'+ids);
http.open('get', 'removeTasks.php?'+ids);
http.onreadystatechange = deleteReply;
http.send(null);
}
function deleteReply() {
if(http.readyState == 4){
var response = http.responseText;
$('message').innerHTML = 'Task removed:'+response;
}
}
resetIDs();//resets ids of list elements, don't worry about it
}
这是我的 php 代码,没有连接的东西。它使它成为 is 语句。
if(isset($_GET['id'])){
$q+="DELETE FROM todolist WHERE ID IN (".$_GET['id'].")"; //line 13
mysql_query($q) or die(mysql_error());
echo "tried to delete stuff";
} else {
echo("Bad delete");
}
当我对 $q 字符串进行更改时,响应回显发生了一些变化,但是最近使用这个简单的版本,它一直在打印 MySQL 错误-
注意:未定义的变量:第 13 行 C:\xampp\htdocs\todo\removeTasks.php 中的 q 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“0”附近使用正确的语法。如何进入 if 语句然后说它是未定义的?
如果我使用
"DELETE FROM todolist WHERE ID IN ("+$_GET['id']+")"
我收到错误通知:第 13 行 C:\xampp\htdocs\todo\removeTasks.php 中的未定义变量:q 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“457”附近使用正确的语法。
457 是第一个 ID。
这里和 mysql 都是新的,所以如果我遗漏了什么,请告诉我。