2011-05-28 131 views
0

當我點擊刪除按鈕。第二頁不會刪除查詢,而是說:查詢中出現錯誤:沒有選中數據庫選中的行被刪除。我想刪除選定的查詢。查詢時發生錯誤:

我應該包括哪些代碼,以便第二頁重定向到第一頁?

query4.php

<html> 
<title> Queries</title> 
<body> 
<h1> List of Queries</h1> 
<form method=post action="delete4.php"> 
<?php 
$ebits = ini_get('error_reporting'); 
error_reporting($ebits^E_NOTICE);// Turns off all the notices &warnings 
mysql_connect("localhost","root","") or die(mysql_error());//Connects to the DB 
mysql_select_db("testdb") or die(mysql_error()); //Selects one database 
echo "<br />"; 
$query = "select * from queries "; 
$result = mysql_query($query) or die(mysql_error()); //sends a unique query to 

active database on the server 
$count=mysql_num_rows($result); 
echo "<table border=\"1\">"; 
echo "<th><tr><td> 

</td><td>Name</td><td>Address</td><td>ContactNo</td><td>Query</td></tr></th>"; 
while($row = mysql_fetch_array($result)) 
{ 
echo"<tr>"; 
echo"<td><input type='checkbox' name='Query[]' value=\"".$row['queryId']."\"></td>"; 
echo " <td>" . $row['name'] . "</td><td>" . $row['address'] . "</td><td>" . $row 
['contactNo'] . "</td><td>" . $row['query'] . "</td>"; 
echo"</tr>\n"; 
} 
?> 
<input type="submit" value="Delete" name="Delete"> 
<br/> 
</form> 
</body> 
</html> 

delete4.php

<?php 
if (isset($_POST['Delete'])) 
{ 
    foreach ($_POST['Query'] as $checkbox) 
    { 
    echo "$checkbox"; 
    $conn= mysql_connect("localhost","root","") or die(mysql_error()); 
    $sql = mysql_select_db("testdb") or die(mysql_error()); 
    $del = mysql_query("DELETE * FROM queries WHERE queryId=$checkbox"); 
    $rs = mysql_query($del) or die(mysql_error()); 
    if($rs) 
    { 
     echo ("Records Deleted"); 
    } 
    else 
    { 
     echo ("No Way"); 
    } 
    } 
} 
?> 
+5

您需要重新連接到每個頁面上的數據庫。 – 2011-05-28 08:41:55

+0

如果我使用此代碼:<?PHP 如果(isset($ _ POST [ '刪除'])) { 的foreach($ _POST [ '查詢']爲$複選框) { 回聲 「$複選框」; $ conn = mysql_connect(「localhost」,「root」,「」)或die(mysql_error()); $ sql = mysql_select_db(「testdb」)或死(mysql_error()); $ del = mysql_query(「DELETE * FROM queries WHERE queryId =」。$ checkbox); $ rs = mysql_query($ del)或die(mysql_error()); if($ rs) { echo(「Records Deleted」); } \t else { echo(「No Way」); } } } ?> – teana 2011-05-29 07:44:50

+0

@teana在評論中很難閱讀 - 我想說試試吧 – 2011-05-29 07:46:21

回答

0

delete4.php大概應該是:

<?php 
$conn = mysql_connect("localhost","root","") or die(mysql_error()); 
$db = mysql_select_db("testdb") or die(mysql_error()); 
if (isset($_POST['Delete'])) 
{ 
    foreach ($_POST['Query'] as $checkbox) 
    { 
    echo "$checkbox"; 
    $del = mysql_query("DELETE * FROM queries WHERE queryId=$checkbox") 
    or die(mysql_error)); 

    if($del) 
    { 
     echo ("Records Deleted"); 
    } 
    else 
    { 
     echo ("No Way"); 
    } 
    } 
} 
?> 

請注意,有很多的改進作出。

您正在連接到數據庫中的一個foreach這是多餘的,並浪費資源 - 想象如果你有幾千件物品循環 - 這將涉及幾千個不必要的呼叫。

您也會打電話mysql_query兩次,將第一個查詢的結果傳遞給第二個查詢,這會導致問題。

您可以使用header('Location:http://site.com/script.php');重定向到另一個頁面,但前提是標頭調用之前沒有輸出。在你的腳本中,你有html輸出,所以如果不做進一步的修改就不能使用。

+0

如果你提到改進,你還應該提到數據庫輸入衛生。 – Arjan 2011-05-29 09:21:31

+0

@ Ross現在說:「你的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第一行'* FROM queries WHERE queryId = 1'附近使用正確的語法。我希望delete4.php應該重定向到query4.php。在這種情況下做什麼? – teana 2011-05-30 11:15:40