PDO CRU无法运行

时间:2014-03-16 05:42:56

标签: php pdo

我需要你的帮助来解决这个问题。我正试图在我的项目中保留书籍功能。我没有任何错误,但我的oop函数包含pdo语句将无法正常工作。特别是插入(值不能插入数据库)和更新(无法更新数据库中的现有信息)部分。我不知道为什么会这样。

bookReserve.php

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


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

  $code = new codex_books();

  $sname = $_POST['sname'];
  $sid = $_POST['sid'];
  $id = $_POST['id'];
  $title = $_POST['title'];
  $author = $_POST['author'];
  $isbn = $_POST['isbn'];
  $publisher = $_POST['publisher'];
  $language = $_POST['language'];
  $genre = $_POST['genre'];
  $quantity = $_POST['quantity'];
  $date_to_be_borrow = $_POST['date_to_be_borrow'];

  $result = $code->bookreserve($id,"book_info");

  if(isset($_POST['reserve']))
  {
      foreach($result as $row)
      {
          echo $oldstock=$row['quantity']; 
      }

      echo $newstock = $oldstock-1;

      $code->minusbookreserve($quantity, $newstock,"book_info");
      $code->insertbookreserve($sid,$sname,$title,$author,$isbn,$publisher,$language,$genre,$quantity,$date_to_be_borrow,"reserve_list");
      // echo "<script type='text/javascript'>alert('Successfully Reserved.');window.location='bookReservelist.php';</script>";
  }
  else {
    echo "<script type='text/javascript'>alert('Something went wrong.');window.location='bookReservelist.php';</script>";
  }

?>

codex_books.php

public function minusbookreserve($quantity, $newstock, $table)
{
  $q = "UPDATE $table SET quantity = ':newstock' where book_title = ':book_title'";
  $stmt = $this->con->prepare($q);
  $stmt->execute(array(':newstock'=>$newstock, ':quantity'=>$quantity));
   if($stmt){
    return true;
    }
  else {
      return false;
  }
}

public function insertbookreserve($sid,$sname,$title,$author,$isbn,$publisher,$language,$genre,$quantity,$date_to_be_borrow,$table)
{
  $q = "INSERT INTO $table SET sid= :sid ,sname=:sname,title=:title,author=:author,isbn=:isbn,publisher=:publisher,language=:language, genre=:genre, quantity=:quantity, date_to_be_borrow=:date_to_be_borrow";
  $stmt = $this->con->prepare($q);
  $stmt->execute(array(':sid'=>$sid,':sname'=>$sname,':title'=>$title,':author'=>$author,':isbn'=>$isbn,':publisher'=>$publisher,':language'=>$language, ':genre'=>$genre,':quantity'=>$quantity,':date_to_be_borrow'=>$date_to_be_borrow));
  return true;
}

1 个答案:

答案 0 :(得分:1)

假设:

$q = "UPDATE $table SET quantity = ':newstock' where book_title = ':book_title'";
                                                                   ^^^^^^^^^^^

book_title在哪里?

$stmt->execute(array(':newstock'=>$newstock, ':quantity'=>$quantity));

你必须检查数据库调用的返回值是否为布尔值FALSE,表示失败。你只是假设一切都会成功,这是编写代码的一种非常糟糕的方式。