2012-12-14 112 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"; 
}