2014-02-15 122 views
0

美好的一天每个人。 我完全需要你的帮助。我对oop & pdo相当陌生,而且我的删除功能有问题。只要点击删除按钮,该项目就不会被删除。看来我不能称之为ID。我只是不知道该怎么做。请帮我解决这个问题。删除PDO OOP问题

这是我的代码。 对于类(CODEX):

public function deleteData($id,$table) 
{ 
    $q = "DELETE FROM $table WHERE id = :id"; 
    $stmt = $this->con->prepare($q); 
    $stmt->execute(array(':id'=>$id)); 

} 

对于UI和网页,我叫ID:

<?php 
include_once "../styles/header-menu-out.php"; 
include_once "dbconnection.php"; 


function __autoload($class){ 
include_once("../main/".$class.".php");} 

$code = new codex("localhost","library_books","root",""); 
$books = $code->showData("book_info"); 

if(isset($_REQUEST['id'])){ 
if($code->deleteData($_REQUEST['id'],"book_info")){ 

echo "<script type='text/javascript'> 
      alert('Book Information have been deleted.'); 
      window.location='bookDeleteUI.php'; 
      </script>"; 
}} 


?> 


    <html> 
     <head><link rel="stylesheet" type="text/css" href="../styles/library_style.css"></head> 
     <title>Book-A-Holic: Delete & Update Books</title> 
     <body><br /><center> 
     <div id="content"><div class="echoname"><br/><br/><b><h2>Book Settings</h2></b><br/></div> 
      <table id="tablecolor" class="echoname" border="1"> 
       <td>ID</td> 
       <td>Title</td> 
       <td>Author</td> 
       <td>ISBN</td> 
       <td>Publisher</td> 
       <td>Language</td> 
       <td>Genre</td> 
       <td>Quantity</td> 
       <td>Availability</td> 
       <td>Queue</td> 
       <td><center>Settings</center></td> 


    <?php 
       echo "<pre>"; 
       foreach ($books as $book) 
        { 
         echo "<tr>"; 
         extract($book); 
         echo "<td>".$id."</td>"; 
         echo "<td>".$title."</td>"; 
         echo "<td>".$author."</td>"; 
         echo "<td>".$isbn."</td>"; 
         echo "<td>".$publisher."</td>"; 
         echo "<td>".$language."</td>"; 
         echo "<td>".$genre."</td>"; 
         echo "<td>".$quantity."</td>"; 
         echo "<td>".$availability."</td>"; 
         echo "<td>".$queue."</td>"; 
         ?> 
         <td><button class="btn"><a href="bookUpdateUI.php?update=$id" >Edit</a></button> 
          <button class="btn"><a href="bookDeleteUI.php?id=$id">Delete</a></button></td> 
         <?php echo "</td>";  

        }  
       echo "</pre>"; 
    ?> 

      </table><br /> 
     </div></center> 
     </body> 
    </hmtl> 


    <?php include_once "../styles/footer-admin.php"; ?> 

回答

1

看起来你已经基本得到它,使用PDO和parametized做得好查询。问题是你不通过php解释器输出$ id。你需要这样做:

<button class="btn"><a href="bookDeleteUI.php?id=<?php echo urlencode($id); ?>">Delete</a></button></td> 
+0

谢谢麦克罗德先生!它工作,但什么是urlencode,它有什么用?顺便说一句,如果你不介意回答另一个问题..为什么我的JavaScript不工作(“书已被删除”提示)? .. – user12345654

+0

'urlencode'用于转义字符,以便它们可以安全地用于'$ _GET'查询中,例如, '&'变成'%26',这样你就不会无意中开始一个新的'key = value'参数(参见http://php.net/urlencode)。你在'deleteData'函数中缺少返回语句。你需要'返回true;'如果记录被删除或'返回false;'如果失败。 –

+0

感谢您的帮助和演讲。感谢一切先生。 – user12345654