php mysql_fetch_array()错误

时间:2012-12-14 10:18:53

标签: php mysql sql database

  

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

我在尝试删除查询正在运行的记录时收到此错误但该行仍保留在页面上。我希望回应“删除”写在while应该出现,但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);
  ?>

我应该如何使while循环工作..

7 个答案:

答案 0 :(得分: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以获取有关这些问题的一些指导。

答案 1 :(得分:1)

当你运行DELETE命令时,我相信没有返回任何内容,因此你不能使用mysql_fetch_array()。如果您正在进行SELECT,通常会使用它。在这种情况下,你要删除一些东西,所以只需删除那个循环,并回显()。

答案 2 :(得分:0)

  1. 不要使用mysql_ *函数,而是使用PDOMysqli
  2. take care关于$ id值。 more info
  3. 我们使用mysql_fetch_array来获取SELECT Queries的返回结果。
  4. 你可能想要这个

    if(mysql_affected_rows()  > 0)
    {
       echo "Deleted";
    }
    else
    {
      echo "An error occured.";
    }
    

答案 3 :(得分: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>

答案 4 :(得分: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';
}
?>

$ count将返回no。已删除的行

答案 5 :(得分:0)

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

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

答案 6 :(得分:-1)

在某些时候死亡会产生问题,所以你就像这样使用它 $ result = mysql_query(“DELETE FROM fact WHERE id ='$ id'”);