2012-12-14 104 views
-7

可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectPHP mysql_fetch_array()错误

我得到这个错误,而我试图删除记录的查询工作,但该行仍然在页面上。我想回显“已删除”,虽然应该显示出来,但while循环不工作,我已经尝试过并搜索了很多没有帮助!

mysql_fetch_array() expects parameter 1 to be resource, boolean given in delete.php on line 27 

delete.php

<html> 
<body> 
<form method="post"> 
Id : <input type="text" name="id"> 
Name : <input type="text" name="name"> 
Description : <input type="text" name="des"> 
<input type="submit" value="delete" name="delete"> 
</form> 
<?php 
include("connect.php"); 
$id = $_POST['id']; 
$name = $_POST['name']; 
$des = $_POST['des']; 

$result = mysql_query("DELETE FROM fact WHERE id='$id'") or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
    { 

    echo "Deleted"; 
    } 

mysql_close($con); ?> 
</body> 
</html> 

connect.php

<?php 
    $con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db("Dataentry", $con); 
    ?> 

我应该怎么做,而循环工作..

+1

也!** SQL注入漏洞** – deceze

+1

也!** mysql_ *功能已过时** – Petah

回答

1

当您运行DELETE命令,我相信e没有返回,因此你不能mysql_fetch_array()。如果你正在做SELECT,你通常会使用它。在这种情况下,您正在删除某些内容,因此只需删除该循环,然后使用echo()。

2

问题是,删除语句不会产生结果集!

$result = mysql_query("DELETE FROM fact WHERE id='$id'") or die(mysql_error()); 
if (mysql_affected_rows() > 0) 
{ 
    echo 'Record deleted!'; 
} 

此外:正如评论中所述,您很容易受到SQL注入的攻击,并且还使用了不推荐的扩展。请通过this awesome post查看关于这些问题的一些指导。

+0

对我来说这一次的工作.. THX ..但我不得不删除,而现在循环 – iOSBee

+0

@ user1877823是的,不需要while循环,因为没有“结果”来循环:) – Dale

0
  1. 不使用mysql_ *函数,请使用PDOMysqli来代替。
  2. take care约$ id值。 more info
  3. 我们使用mysql_fetch_array来获取SELECT查询的返回结果。

你可能想这

if(mysql_affected_rows() > 0) 
{ 
    echo "Deleted"; 
} 
else 
{ 
    echo "An error occured."; 
} 
-1
在一段时间

死创造的问题,所以你使用这样 $结果= mysql_query( “DELETE FROM事实上WHERE ID = '$ ID'”);

0
<html> 
    <body> 
    <form method="post"> 
     Id : <input type="text" name="id"> 
     Name : <input type="text" name="name"> 
    Description : <input type="text" name="des"> 
    <input type="submit" value="delete" name="delete"> 
    </form> 
    <?php 
    include("connect.php"); 
    $id = $_POST['id']; 
    $name = $_POST['name']; 
    $des = $_POST['des']; 

    $result = mysql_query("DELETE FROM fact WHERE id='$id'") or die(mysql_error()); 

    if($result) //if(mysql_affected_rows($result) > 0) 
    { 

     echo "Deleted"; 
    } 
    else 
    { 
     echo mysql_error(); 
    } 

    mysql_close($con); ?> 
    </body> 
    </html> 
0

不要使用mysql_ *功能,尝试PDO例如

<?php 
$dbh = new PDO('mysql:host=localhost;dbname=test', 'user', 'password'); 
$count = $dbh->exec("DELETE FROM fact WHERE id='$id'"); 
if($count > 0){ 
    echo 'Deleted'; 
}else{ 
    echo 'Not Deleted'; 
} 
?> 

$数将不返回。行删除

0
$result = mysql_query("DELETE FROM fact WHERE id='$id'") or die(mysql_error()); 

if($result) 
{ 
    echo "Deleted"; 
}