Не могу взаимодействовать с ClearDB, размещенным на Heroku

Итак, я устанавливаю соединение следующим образом:

<?php
define("DB_HOST", 'us-cdbr-iron-east-02.cleardb.net');
define("DB_USER", 'bc2****06bc220');
define("DB_PASS", '04****ae08');
define("DB_NAME", 'heroku_7da****a5ce8ba');
?>

Затем я создал дамп (localhost.sql) своей базы данных и выполняю его следующим образом:

"mysql --host=us-cdbr-iron-east-02.cleardb.net --user=bc2dc****6bc220 --reconnect heroku_7****4ca5ce8ba < localhost.sql"

Это не дает никаких ошибок после этого.

Но тогда больше ничего
http://ajaxaddressbook.herokuapp.com/

Предполагается, что будут отображаться некоторые данные, и когда я пытаюсь добавить что-либо, появляются следующие ошибки:

ПОЛУЧИТЬ http://ajaxaddressbook.herokuapp.com/contacts.php 500 — внутренняя ошибка сервера)

СООБЩЕНИЕ http://ajaxaddressbook.herokuapp.com/add_contact.php 500 — внутренняя ошибка сервера)

Вот, например, как я пытаюсь добавить контакт (я использую PDO):

<?php include 'core/init.php'; ?>
<?php
//Create DB Object
$db = new Database;

//Run Query
$db->query("INSERT INTO `addressbook_contacts` (first_name, last_name, email, phone, address1, address2, city, state,  zipcode, contact_group, notes)
VALUES (:first_name, :last_name, :email, :phone, :address1, :address2, :city, :state, :zipcode, :contact_group, :notes)");

//Bind Values
if($_POST){
$db->bind(':first_name', $_POST['first_name']);
$db->bind(':last_name', $_POST['last_name']);
$db->bind(':email', $_POST['email']);
$db->bind(':phone', $_POST['phone']);
$db->bind(':address1', $_POST['address1']);
$db->bind(':address2', $_POST['address2']);
$db->bind(':city', $_POST['city']);
$db->bind(':state', $_POST['state']);
$db->bind(':zipcode', $_POST['zipcode']);
$db->bind(':contact_group', $_POST['contact_group']);
$db->bind(':notes', $_POST['notes']);

if($db->execute()){
echo "Contact was added";
} else{
echo "Could not add contact";
}
} else{
echo "Could not add contact";
}

?>

Я проверил все, и он работает на моем локальном хосте, все как положено, но если я пытаюсь подключиться к ClearDB, размещенной на Heroku, это не сработает.

постскриптум У меня есть это в composer.json:

{
"require": {
"ext-mysql": "*"}
}

P.S.S. Вот мой класс PDO:

<?php
class Database{
private $host   = DB_HOST;
private $user   = DB_USER;
private $pass   = DB_PASS;
private $dbname = DB_NAME;

private $dbh;
private $error;
private $stmt;

public function __construct(){
// Set DSN
/*
* A data source name (DSN) is a data structure that contains the information about a specific database that an Open Database Connectivity ( ODBC ) driver needs in order to connect to it.
*/
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set Options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instance
try{
$this -> dbh = new PDO($dsn, $this->user, $this->pass, $options);
}   // Catch any Errors
catch(PDOException $e){
$this->error = $e->getMessage();
};
}

public function query($query){
$this->stmt = $this->dbh->prepare($query);
}

public function bind($param, $value, $type = null){
if(is_null ( $type )){
switch(true){
case is_int ($value):
$type = PDO::PARAM_INT;
case is_bool ($value):
$type = PDO::PARAM_BOOL;
case is_null ($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue ($param, $value, $type);
}

public function execute(){
return $this->stmt->execute();
}

public function resultset(){
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_OBJ);
}

public function single(){
$this -> execute();
return $this->stmt-> fetch(PDO::FETCH_OBJ);
}

public function rowCount(){
return $this->stmt->rowCount();
}

public function lastInsertId(){
return $this->dbh->lastInsertId();
}

};
?>

p.s.s.s. Iv’e поймал это исключение PDO:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'heroku_7da7af4ca5ce8ba.addressbook_contacts' doesn't exist' in /app/libraries/Database.php:54

Похоже, мой дамп не был выполнен, а база данных на сервере Heroku пуста?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector