我正在使用PHP方法将值发送到GET表单。当我转到URL时,链接如下所示:

http://www.url.com/getstuff.php?rid=sG94Ok5JtHQ&searcht=music&r=0


我正在使用以下函数来处理变量:

if (isset($_GET['rid'])) {

  if($_GET['r'] == 0) {
      echo $_GET['searcht'];
      echo $_GET['rid'];
      mysql_query('DELETE FROM flags WHERE searchText = "'.$_GET['searcht'].'" AND videoID = "'.$rid.'"');
  } else
  {
      mysql_query('INSERT INTO removed (videoID) VALUES ("'.$_GET['rid'].'")');
      mysql_query('DELETE FROM flags WHERE searchText = "'.$_GET['searcht'].'" AND videoID = "'.$rid.'"');
  }
}


由于某些原因,INSERT语句可以在上面运行,但是delete语句不执行任何操作。当我echo mysql_error()时,我也什么也没得到。我确定列和表名正确。任何帮助将不胜感激,以帮助我使delete语句正常工作!谢谢!

最佳答案

即使没有删除任何内容,DELETE查询也会成功。在代码中,使用$rid变量,该变量从未设置。有一个$_GET['rid']变量,因此解决方法可能是将$rid分配给$_GET['rid'],例如

{
      $rid = $_GET['rid'];
      mysql_query('INSERT INTO removed (videoID) VALUES ("'.$_GET['rid'].'")');
      mysql_query('DELETE FROM flags WHERE searchText = "'.$_GET['searcht'].'" AND videoID = "'.$rid.'"');
}


或者将$rid的所有实例更改为$_GET['rid'],例如

{
      mysql_query('INSERT INTO removed (videoID) VALUES ("'.$_GET['rid'].'")');
      mysql_query('DELETE FROM flags WHERE searchText = "'.$_GET['searcht'].'" AND videoID = "'.$_GET['rid'].'"');
}


另外,不建议使用mysql_函数,您应该使用PDO / mysqli。另外,您不会在任何地方清理数据(使用intvalmysql_real_escape_string或类似方法),因此您很愿意接受SQL注入。

关于php - MySQL删除查询不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23860059/

10-11 02:51