rgb192
asked on
I can write to database using wamp, google chrome
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 8 attempt to write a readonly database' in C:\wamp\www\POPP-edition4- code\97814 30260318_C hapter_04_ Code\gener ate_produc t_pdo.php: 36 Stack trace: #0 C:\wamp\www\POPP-edition4- code\97814 30260318_C hapter_04_ Code\gener ate_produc t_pdo.php( 36): PDO->query('INSERT INTO pro...') #1 C:\wamp\www\POPP-edition4- code\97814 30260318_C hapter_04_ Code\listi ng4.03.php (134): getPDO() #2 {main} thrown in C:\wamp\www\POPP-edition4- code\97814 30260318_C hapter_04_ Code\gener ate_produc t_pdo.php on line 36
listing4.03.php
generate_product_pdo.php
I can write to database using wamp, google chrome
but not nushpere php ide
listing4.03.php
<?php
class ShopProduct {
private $title;
private $producerMainName;
private $producerFirstName;
protected $price;
private $discount = 0;
private $id = 0;
public function __construct( $title, $firstName,
$mainName, $price ) {
$this->title = $title;
$this->producerFirstName = $firstName;
$this->producerMainName = $mainName;
$this->price = $price;
}
public function setID( $id ) {
$this->id = $id;
}
public function getProducerFirstName() {
return $this->producerFirstName;
}
public function getProducerMainName() {
return $this->producerMainName;
}
public function setDiscount( $num ) {
$this->discount=$num;
}
public function getDiscount() {
return $this->discount;
}
public function getTitle() {
return $this->title;
}
public function getPrice() {
return ($this->price - $this->discount);
}
public function getProducer() {
return "{$this->producerFirstName}".
" {$this->producerMainName}";
}
function getSummaryLine() {
$base = "$this->title ( $this->producerMainName, ";
$base .= "$this->producerFirstName )";
return $base;
}
public static function getInstance( $id, PDO $pdo ) {
$query = "select * from products where id='$id'";
$stmt = $pdo->prepare("select * from products where id=?");
$result = $stmt->execute( array( $id ) );
$row = $stmt->fetch( );
if ( empty( $row ) ) { return null; }
if ( $row['type'] == "book" ) {
$product = new BookProduct(
$row['title'],
$row['firstname'], $row['mainname'],
$row['price'], $row['numpages'] );
} else if ( $row['type'] == "cd" ) {
$product = new CdProduct(
$row['title'],
$row['firstname'], $row['mainname'],
$row['price'], $row['playlength'] );
} else {
$product = new ShopProduct(
$row['title'],
$row['firstname'], $row['mainname'],
$row['price'] );
}
$product->setId( $row['id'] );
$product->setDiscount( $row['discount'] );
return $product;
}
}
class CdProduct extends ShopProduct {
private $playLength = 0;
public function __construct( $title, $firstName,
$mainName, $price, $playLength ) {
parent::__construct( $title, $firstName,
$mainName, $price );
$this->playLength = $playLength;
}
public function getPlayLength() {
return $this->playLength;
}
function getSummaryLine() {
$base = parent::getSummaryLine();
$base .= ": playing time - $this->playLength";
return $base;
}
}
class BookProduct extends ShopProduct {
private $numPages = 0;
public function __construct( $title, $firstName,
$mainName, $price, $numPages ) {
parent::__construct( $title, $firstName,
$mainName, $price );
$this->numPages = $numPages;
}
public function getNumberOfPages() {
return $this->numPages;
}
function getSummaryLine() {
$base = parent::getSummaryLine();
$base .= ": page count - $this->numPages";
return $base;
}
public function getPrice() {
return $this->price;
}
}
require_once("generate_product_pdo.php");
$pdo = getPDO();
$obj = ShopProduct::getInstance( 1, $pdo );
print_r( $obj );
$obj = ShopProduct::getInstance( 2, $pdo );
print_r( $obj );
$obj = ShopProduct::getInstance( 3, $pdo );
print_r( $obj );
?>
generate_product_pdo.php
<?php
function getPDO() {
$create_products = "CREATE TABLE if not exists products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT,
firstname TEXT,
mainname TEXT,
title TEXT,
price float,
numpages int,
playlength int,
discount int )";
$filename=dirname(__FILE__);
//$dsn = "sqlite:/".$filename."/products.db";
//$dsn = $filename."/products.db";
$dsn='products.db' ;
//$pdo = new PDO( $dsn, null, null );
//$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try{
//$pdo = new PDO( $dsn, null, null );
$pdo = new PDO("sqlite:/$dsn");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $exc){
trigger_error($exc->getMessage(), E_USER_ERROR);
echo '<br>error<br>';
}
$stmt= $pdo->query( "select count(*) from SQLITE_MASTER" );
$row = $stmt->fetch( );
$stmt->closeCursor();
if ( $row[0] > 0 ) {
// $pdo->query( "DROP TABLE products" );
}
$pdo->query( $create_products );
$pdo->query( "INSERT INTO products ( type, firstname, mainname, title, price, numpages, playlength, discount )
values ( 'book', 'Jwilla', 'cather', 'my antonia', 4.22, 200, NULL, 0 )");
$pdo->query( "INSERT INTO products ( type, firstname, mainname, title, price, numpages, playlength, discount )
values ( 'cd', 'the', 'clash', 'london calling', 4.22, 200, 60, 0 )");
$pdo->query( "INSERT INTO products ( type, firstname, mainname, title, price, numpages, playlength, discount )
values ( 'shop', NULL, 'pears', 'soap', 4.22, NULL, NULL, 0 )");
return $pdo;
}
?>
I can write to database using wamp, google chrome
but not nushpere php ide
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
ok, a windows file system error. Thanks.
I will not attempt to fix windows filesystem for one question.
So I will move on to other php examples.
I will not attempt to fix windows filesystem for one question.
So I will move on to other php examples.
ASKER
maybe compare php.ini wamp which works and php.ini of nusphere ide which does not allow create, delete to database but does allow select
because I used cygwin unix tool to 777 the entire matt zandstra example folder