Проблемы Activerecord ActiverecordPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы Activerecord Activerecord

Сообщение Anonymous »

Я пытаюсь построить свое первое приложение на Codeigniter. Это также я впервые пытаюсь придерживаться ООП и MVC как можно больше. Пока все в порядке, но теперь, когда я пытаюсь написать свою первую модель, у меня возникли проблемы. Вот ошибка, которую я получаю: < /p>


Ошибка базы данных произошла < /p>

Ошибка Номер: 1064 < /p>

У вас есть ошибка в вашем синтаксисе SQL; Проверьте руководство, которое соответствует вашей версии MySQL Server для правильного синтаксиса для использования рядом с 'Castledine' в строке 3 < /p>

select * from () где автор = earle castledine


, который, как вы увидите ниже, относится к следующему Строка в моей модели: < /p>

$this->db->get_where('authors', array('author' => $author));
< /code>

Я не совсем уверен, почему она бросает ошибку. Это потому, что Earle Castledine не в цитатах? Если так, почему CI не поместил их туда? Я бы сомневался, что это проблема, скорее, чтобы думать, что это моя вина, но я не уверен. < /P>

У меня тоже есть другая проблема. Ни теги, ни авторы не вставлены в свои столы. Их заявление о вставке завершено в условное, которое должно убедиться, что их еще не существует, но, похоже, он терпит неудачу, и вставка никогда не происходит. Я предполагаю, что это терпит неудачу, потому что теги не помещаются в базу данных, и это в разделе автора, прежде чем бросить ошибку. Я знаю, как сделать это с чистым PHP, но я пытаюсь сделать это по -тому CI Activerecord. < /p>

Вот утверждение, которое я использую: < /p>

if ($this->db->count_all_results() == 0)
< /code>

И я использую это вместо того, что я бы обычно использовал: < /p>

if (mysql_num_rows() == 0)
< /code>

Я делаю это неправильно? < /p>

Вот моя модель и контроллер (только функции, которые имеют значение), прокомментированные как можно лучше. < /p>

Модель: < /p>

function new_book($book, $tags, $authors, $read) {

// Write book details to books table
$this->db->insert('books', $book);

// Write tags to tag table and set junction
foreach ($tags as $tag) {
// Check to see if the tag is already in the 'tags' table
$this->db->get_where('tags', array('tag' => $tag));
// trying to use this like mysql_num_rows()
if ($this->db->count_all_results() == 0) {
// Put it there
$this->db->insert('tags', $tag);
}
// Set the junction
// I only need the id, so...
$this->db->select('id');
// SELECT id FROM tags WHERE tag = $tag
$query = $this->db->get_where('tags', array('tag' => $tag));
// INSERT INTO books_tags (book_id, tag_id) VALUES ($book['isbn'], $query->id)
$this->db->insert('books_tags', array('book_id' => $book['isbn'], 'tag_id' => $query->id));
}

// Write authors to author table and set junction
// Same internal comments apply from tags above
foreach ($authors as $author) {
$this->db->get_where('authors', array('author' => $author));
if ($this->db->count_all_results() == 0) {
$this->db->insert('authors', $author);
}
$this->db->select('id');
$query = $this->db->get_where('authors', array('author' => $author));
$this->db->insert('authors_books', array('book_id' => $book['isbn'], 'author_id' => $query));
}

// If the user checked that they've read the book
if (!empty($read)) {
// Get their user id
$user = $this->ion_auth->get_user();
// INSERT INTO books_users (book_id, tag_id) VALUES ($book['isbn'], $user->id)
$this->db->insert('books_users', array('book_id' => $book['isbn'], 'user_id' => $user->id));
}

}
< /code>

контроллер: < /p>

function confirm() {

// Make sure they got here by form result, send 'em packing if not
$submit = $this->input->post('details');
if (empty($submit)) {
redirect('add');
}

// Set up form validation
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('', ' Also, you’ll need to choose your file again.');
$this->form_validation->set_rules('isbn','ISBN-10','trim|required|exact_length[10]|alpha_numeric|unique[books.isbn]');
$this->form_validation->set_rules('title','title','required');
$this->form_validation->set_rules('tags','tags','required');

// Set up upload
$config['upload_path'] = './books/';
$config['allowed_types'] = 'pdf|chm';
$this->load->library('upload', $config);

// If they failed validation or couldn't upload the file
if ($this->form_validation->run() == FALSE || $this->upload->do_upload('file') == FALSE) {
// Get the book from Amazon
$bookSearch = new Amazon();
try {
$amazon = $bookSearch->getItemByAsin($this->input->post('isbn'));
} catch (Exception $e) {
echo $e->getMessage();
}
// Send them back to the form
$data['image'] = $amazon->Items->Item->LargeImage->URL;
$data['content'] = 'add/details';
$data['error'] = $this->upload->display_errors('','');
$this->load->view('global/template', $data);

// If they did everything right
} else {
// Get the book from Amazon
$bookSearch = new Amazon();
try {
$amazon = $bookSearch->getItemByAsin($this->input->post('isbn'));
} catch (Exception $e) {
echo $e->getMessage();
}

// Grab the file info
$file = $this->upload->data();

// Prep the data for the books table
$book = array(
'isbn' => $this->input->post('isbn'),
'title' => mysql_real_escape_string($this->input->post('title')),
'date' => $amazon->Items->Item->ItemAttributes->PublicationDate,
'publisher' => mysql_real_escape_string($amazon->Items->Item->ItemAttributes->Publisher),
'pages' => $amazon->Items->Item->ItemAttributes->NumberOfPages,
'review' => mysql_real_escape_string($amazon->Items->Item->EditorialReviews->EditorialReview->Content),
'image' => mysql_real_escape_string($amazon->Items->Item->LargeImage->URL),
'thumb' => mysql_real_escape_string($amazon->Items->Item->SmallImage->URL),
'filename' => $file['file_name']
);

// Get the tags, explode by comma or space
$tags = preg_split("/[\s,]+/", $this->input->post('tags'));
// Get the authors
$authors = array();
foreach ($amazon->Items->Item->ItemAttributes->Author as $author) {
array_push($authors, $author);
}
// Find out whether they've read it
$read = $this->input->post('read');
// Send it up to the database
$this->load->model('add_model', 'add');
$this->add->new_book($book, $tags, $authors, $read);
// For now... Later I'll load a view
echo 'Success';

}

}
< /code>

Может ли кто -нибудь помочь пролить свет на то, что я делаю не так? Большое спасибо. < /p>

marcus < /p>

Подробнее здесь: https://stackoverflow.com/questions/379 ... d-problems
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Codeigniter меняет ORM php-activerecord на новый ORM для PHP 8.2
    Гость » » в форуме Php
    0 Ответы
    71 Просмотры
    Последнее сообщение Гость
  • Суммируйте значения столбцов с помощью ActiveRecord Codeigniter
    Anonymous » » в форуме Php
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Суммируйте значения столбцов с помощью ActiveRecord Codeigniter
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Yii2: события ActiveRecord, которые срабатывают только по сценарию
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Синтаксическая ошибка, неожиданная '' (T_ENCAPSED_AND_WHITESPACE) - Yii2, запрос ActiveRecord
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»