2016-05-16 78 views
0

我试图用php从表中删除一行。我有以下的代码:用php删除一行的问题

<?php 
    if($_GET["act"] == 'eliminarart' && $_GET["id"] != '') 
    { 
     var_dump($_GET); 
     if($mysql->query("DELETE FROM landing_articulos WHERE id_articulo = ". intval($_GET["id"])." LIMIT 1")){ 
      redirige('nuevapagina.php'); 
     } else { 
      $e=$mysqli->error; 
      echo $e; 
     } 
    } 
?> 

<head> 
    <script language="javascript"> 
     function eliminar_art(id){ 
      var mensaje = 'Deseas eliminar este articulo?'; 
      eliminar = confirm(mensaje); 
      if (eliminar) 
       document.location='nuevapagina.php?act=eliminarart&id='+id; 
     } 
    </script> 
</head> 

我把所有这些代码在这里:

while($f1 = mysql_fetch_array($c1)){ 
    ?> 
    <div style="float:left; width:32%; padding-left:0px; color:#ef5000; font-weight:bold; margin:5px;"><p><a href="http://www.certifacil.es/articulos/<?=$f1["url"]?>" target="_blank"><strong><?=$f1["nombre"];?></strong></a> <a href="editar_nuevapagina.php?id=<?=$f1["id_articulo"]?>"><img src="imagenes/lapiz.png" width="15" height="15" border="0"/></a> </a> <a href="javascript:eliminar_art('<?=$f1["id_articulo"]?>');"><img src="imagenes/delete.png" width="15" height="15" border="0"/></a> <? if($f1["valido"]=='0')echo ' - SIN VALIDAR';?></p></div><? 
} 

var_dump返回数据,但我得到的ID是一个i​​nt的字符串,而不是因为它的已定义数据库。那么我做错了什么?所有这些代码都在一个名为nuevapagina.php的页面中。

+1

为什么你'mysql_fetch_array()'当您使用的MySQLi? – Panda

+1

请寄出'var_dump()'的输出。通过“一个字符串”,你的意思是它是一个数字字符串('$ _GET'总是字符串)还是一个非数字字符串?在后一种情况下,它会使用'intval()'强制转换为零,并且可能不匹配任何行。 –

+0

那究竟是不是在工作? – DaGardner

回答

0

无需转换成整数只是单纯地做它:

$mysql->query("DELETE FROM landing_articulos WHERE id_articulo = ".$_GET["id"]." LIMIT 1" 
+2

虽然安全洞.. – Qirel

+0

@Qirel如果OP有任何安全问题,他们将使用Prepared Statements。 – Martin

+0

他没有使用准备好的语句,但他正在用'intval'过滤输入变量 – CarlosCarucce