2016-05-16 106 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