-7

可能重复:
mysql_fetch_array() 期望参数 1 是资源,选择中给出的布尔值

我在尝试删除查询正在工作的记录时收到此错误,但此行仍保留在页面上。我想回显写在 while 中的“已删除”应该出现,但 while 循环不起作用,我已经尝试并搜索了很多没有任何帮助!

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

删除.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>

连接.php

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

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

4

7 回答 7

2

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

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

另外:正如评论中提到的,您很容易受到 SQL 注入的攻击,并且还使用了不推荐使用的扩展。请查看这篇很棒的帖子以获取有关这些问题的一些指导。

于 2012-12-14T10:21:04.247 回答
1

当您运行DELETE命令时,我相信没有返回任何内容,因此您不能使用 mysql_fetch_array()。如果你正在做一个SELECT. 在这种情况下,您正在删除某些内容,因此只需删除该循环和 echo()。

于 2012-12-14T10:20:53.560 回答
0
  1. 不要使用 mysql_* 函数,而是使用PDOMysqli
  2. 注意$id 值。更多信息
  3. 我们使用 mysql_fetch_array 来获取 SELECT 查询的返回结果。

你可能想要这个

if(mysql_affected_rows()  > 0)
{
   echo "Deleted";
}
else
{
  echo "An error occured.";
}
于 2012-12-14T10:24:56.677 回答
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>
于 2012-12-14T10:28:05.943 回答
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。删除的行数

于 2012-12-14T10:31:43.060 回答
0
$result = mysql_query("DELETE FROM fact WHERE id='$id'") or die(mysql_error());

if($result)
{
    echo "Deleted";
}
于 2012-12-14T10:44:59.373 回答
-1

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

于 2012-12-14T10:26:59.537 回答