Мой foreach l oop в PHP вставляет неправильное значение. У меня есть таблица, которая собирает данные о книге, используя форму html с jquery. В таблицу я вставлял значение массива, вот мой код из формы.
форма. php
include_once 'config/database.php';
include_once 'config/bookclass.php';
$database = new Database();
$db = $database->getConnection();
$book = new Book($db);
if($_POST){
$book->book_title=$_POST['book_title'];
$book->number_of_ page=$_POST['number_of_ page'];
$book->genre=$_POST['genre'];
$book->author=$_POST['author'];
$book->type=$_POST['type'];
$book->publication=$_POST['publication'];
if($book->book()){
echo "saved";
}
else{
echo "not saved";
}
}
и вот мой код из книжного класса. php, который я используется для вставки данных
public function book(){
foreach($this-> book_title AS $this->key => $this->value) {
$query = "INSERT INTO
table_a
SET
book_title=:book_title,
number_of_ page = :number_of_page,
genre = :genre,
author = :author,
type = :type,
publication = :publication";
$stmt = $this->conn->prepare($query);
$this->book_title=$this->value;
$this->number_of_ page= $this->number_of_ page[$this->key];
$this->genre = $this->genre[$this->key];
$this-> author= $this-> author[$this->key];
$this-> type= $this-> type[$this->key];
$this-> publication = $this->publication[$this->key];
$stmt->bindParam(':book_title', $this->book_title);
$stmt->bindParam(':number_of_ page', $this->number_of_ page);
$stmt->bindParam(':genre ', $this->genre );
$stmt->bindParam(':author', $this->author);
$stmt->bindParam(': type', $this-> type);
$stmt->bindParam(':publication', $this->publication);
$stmt->execute();
}
вот данные, которые я вставляю в таблицу.
+-----------+---------------+-------+--------------+------------+-----------+
| book_title|number_of_ page| genre | author | type |publication|
+-----------+---------------+-------+--------------+------------+-----------+
| carrie | 199 | horror| stephen king | softcover | 1974 |
+-----------+---------------+-------+--------------+------------+-----------+
| dune | 412 | scifi | frank herbert| hardcover | 1965 |
, но вот каков результат на бэкэнде.
+-----------+---------------+-------+--------------+------------+-----------+
| book_title|number_of_ page| genre | author | type |publication|
+-----------+---------------+-------+--------------+------------+-----------+
| carrie | 199 | horror| H | softcover | 1974 |
+-----------+---------------+-------+--------------+------------+-----------+
| dune | 9 | o | I | o | 9 |
Я не уверен, в чем проблема. Может быть, кто-то может поделиться своим экспертным мнением по этому вопросу, я бы с удовольствием это оценил. Заранее большое спасибо.
РЕДАКТИРОВАТЬ: Я могу правильно вставить данные в первый ряд, вот как это выглядит сейчас. Автор из первого ряда был верным, но во втором из «I» он теперь стал «t».
+-----------+---------------+-------+--------------+------------+-----------+
| book_title|number_of_ page| genre | author | type |publication|
+-----------+---------------+-------+--------------+------------+-----------+
| carrie | 199 | horror| stephen king | softcover | 1974 |
+-----------+---------------+-------+--------------+------------+-----------+
| dune | 9 | o | t | o | 9 |
Дополнительные правки:
Поэтому я добавляю этот код в форма. php
include_once 'config/database.php';
include_once 'config/bookclass.php';
$database = new Database();
$db = $database->getConnection();
$book = new Book($db);
if($_POST){
$book->book_title=$_POST['book_title'];
$book->number_of_ page=$_POST['number_of_ page'];
$book->genre=$_POST['genre'];
$book->author=$_POST['author'];
$book->type=$_POST['type'];
$book->publication=$_POST['publication'];
if($book->book()){
var_dump ($value);
var_dump($book->number_of_ page[$key]);
var_dump($book->genre[$key]);
var_dump($book->author[$key]);
var_dump($book->type[$key]);
var_dump($book->publication[$key]);
}
else{
echo "not saved";
}
}
И вот что я получил:
Notice: Undefined variable: value in /var/www/html/library/form.php on line 106
NULL
Notice: Undefined variable: key in /var/www/html/library/form.php on line 107
Notice: String offset cast occurred in /var/www/html/library/form.php on line 107
string(1) "9"
Notice: Undefined variable: key in /var/www/html/library/form.php on line 108
Notice: String offset cast occurred in /var/www/html/library/form.php on line 108
string(1) "t"
Notice: Undefined variable: key in /var/www/html/library/form.php on line 109
Notice: String offset cast occurred in /var/www/html/library/form.php on line 109
string(1) "o"
Notice: Undefined variable: key in /var/www/html/library/form.php on line 110
Notice: String offset cast occurred in /var/www/html/library/form.php on line 110
string(1) "o"
Notice: Undefined variable: key in /var/www/html/library/form.php on line 111
Notice: String offset cast occurred in /var/www/html/library/form.php on line 111
string(1) "9"