Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 8
1

Не передаются данные в БД!

10.12.2014, 16:39. Показов 1262. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую! Я пока еще зеленый и нуждаюсь в Вашей помощи.
При попытке отправить данные в таблицу БД ничего не происходит, в чем проблема?
Вот моя функция которая должна сохранять данные:
PHP
1
2
3
4
5
6
7
8
9
$link = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME) or die(mysqli_connect_error());
 
function saveOrder($datetime){
global $link, $basket;
$goods = myBasket();
 
foreach($goods as $item){
$sql = "INSERT INTO orders (title, author, pubyear, price, quantiti, orderid, datetime) VALUES({$item['title']}, {$item['author']}, {$item['pubyear']}, {$item['price']}, {$item['quantiti']}, {$basket['orderid']}, {$item['datetime']})";
mysqli_query($link, $sql) or die (mysql_error());}
Данные которые приходят из корзины MyBasket:
var_dump($goods)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
array (size=3)
  0 => 
    array (size=6)
      'id' => string '3' (length=1)
      'title' => string 'Франкл' (length=12)
      'author' => string 'Человек в поиске смысла' (length=43)
      'pubyear' => string '1989' (length=4)
      'price' => string '1488' (length=4)
      'quantiti' => int 1
  1 => 
    array (size=6)
      'id' => string '5' (length=1)
      'title' => string 'Над пропастью во ржи' (length=37)
      'author' => string 'Селенджер' (length=18)
      'pubyear' => string '1900' (length=4)
      'price' => string '150' (length=3)
      'quantiti' => int 1
  2 => 
    array (size=6)
      'id' => string '7' (length=1)
      'title' => string 'Учения дона Хуана' (length=32)
      'author' => string 'К.Кастанеда' (length=21)
      'pubyear' => string '1900' (length=4)
      'price' => string '900' (length=3)
      'quantiti' => int 1
Дело в том, что если я меняю запрос на "SELECT ...", он выполняется.
Это говорит мне о том, что в mysqli_query() ошибки нет.

при запросе
PHP
1
echo $sql;
результат:
INSERT INTO `orders` (`title`, `author`, `pubyear`, `price`, `quantiti`, `orderid`, `datetime`) VALUES ('Франкл', 'Человек в поиске смысла', '1989', '1488', '1', '54856872cd787', '')

На этом этапе я тоже не вижу ошибки. Вообще без понятия. Помогайте!
Буду благодарен за любую информацию!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2014, 16:39
Ответы с готовыми решениями:

В Debug режиме в VS-2012 данные передаются нормально, но при запуске без дебага возникают ошибки и данные не передаются
Всем доброе время суток. Есть проект, работающий на ASP.NET MVC с использованием Entity Framework....

не передаются данные из JS в PHP
Всем привет. Народ, есть сайт: http://bodys.top/ При клике на кнопку "В корзину" срабатывает...

Не передаются данные из формы
Такая проблема: есть html-файл с формой, и есть обработчик php-файл, в котором введенные на форму...

Не передаются данные из формы
Имеется форма <div id="con1"> <form method="POST" action="add_books.php" > ...

6
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
10.12.2014, 18:10 2
12three, очень странно, что у вас не ругается на переменную $item['datetime'], т.к. в массиве нет элементов с таким ключом. И смущает переменная "$basket['orderid']". Вы уверены, что она для всех запросов одна и та же? Это как бы раз. Во-вторых, весь ваш INSERT можно сделать одним запросом.
PHP
1
2
3
4
5
6
7
8
$query = "INSERT INTO `orders` (`title`, `author`, `pubyear`, `price`, `quantiti`, `orderid`, `datetim`) VALUES ";
$data = array();
foreach($goods as $item){
    $data[] = "('".$item['title']."', '".$item['author']."', '".$item['pubyear']."', '".$item['price']."', '".$item['quantiti']."', '".$basket['orderid']."', '".$item['datetime']."')";
}
$query .= implode(',',$data);
// и всего один запрос
mysqli_query($link, $query) or die (mysql_error());
С MySQLi знаком обзорно, но даже если не одним запросом, то помнится , что есть функция mysqli_multi_query(), которая позволяет делать несколько запросов. Плюс ко всему, желательно имена полей и таблиц оборачивать в обратные кавычки (буква Ё в англ. раскладке). И напоследок - плохо, что вы не обрабатываете данные перед запросом, тем более, что в MySQLi, как и в PDO, есть возможность использования плейсхолдеров.

Добавлено через 2 минуты
P.S. И кстати, строковые значения в вашем запросе не взяты в кавычки.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 8
10.12.2014, 19:54  [ТС] 3
Lazy_Den, Все что можно обернул в кавычки и и `` . Исправил datetime(там действительно был косяк), проблема сохранилась. Сейчас это выглядит вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function saveOrder($datetime){
    global $link, $basket;
    $goods = myBasket();
            
            foreach($goods as $item){
            $sql = "INSERT INTO `orders` (`title`, `author`, `pubyear`, `price`, `quantiti`, `orderid`, `datetime`) VALUES ('" . $item['title'] . "',
            '".$item['author']."',
            '".$item['pubyear']."',
            '".$item['price']."',
            '".$item['quantiti']."',
            '".$basket['orderid']."',
            '".$datetime."')";
            echo "$sql<br/>";
            mysqli_query($link, $sql);}
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
10.12.2014, 20:04 4
12three, Визуально ошибок нет. Сделайте запрос "вручную", т.е. без циклов и прочего, а сами запишите все данные и запустите. Посмотрим на результат. Во-вторых, я вас не спросил, но если у вас вывод ошибок не включен, то включите. Например, в .htaccess пропишите строку:
Код
php_flag display_errors on
И хоть вы говорили, что коннект с БД есть, но всё равно перепроверьте, что бы объект "$link" был в норме:
PHP
1
2
3
if ($link->connect_error) {
    echo 'Хьюстон! У нас проблемы!';
}
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 8
10.12.2014, 21:47  [ТС] 5
Lazy_Den, Проверку на хьюстон проходит успешно, но вот
PHP
1
2
$r=mysqli_query($link, $sql);
    var_dump($r)
возвращает false

Попытки отправить запрос без циклов не увенчался успехом!
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
10.12.2014, 21:54 6
Лучший ответ Сообщение было отмечено 12three как решение

Решение

12three, Проверьте правильность названий всех полей. И выполните этот же запрос напрямую: из консоли или phpMyAdmin.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 8
10.12.2014, 22:25  [ТС] 7
Запрос прошел! Я по детски счастлив
Спасибо, Денис!
0
10.12.2014, 22:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2014, 22:25
Помогаю со студенческими работами здесь

Данные не верно передаются
в вузе дали задание - написать на html и php типа БД. вроде сделал что-то, но при заполнении...

не передаются данные из формы
Добрый день. У меня возникла такая проблема! Данные из формы передаются, но только часть, т.е. в...

Не передаются данные $.ajax()
Не получается передать две переменные для обработки их в БД (board_db.php) Оба файла находется в...

Не передаются данные в БД из формы
Код подключения БД &lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;windows-1251&quot;&gt;...

Не передаются данные с формы
Создание формы: $form = '&lt;form action=&quot;../Model/News_edit.php&quot;&gt;&lt;input type=&quot;hidden&quot;...

Не передаются данные из формы
Не передает данные из textarea в php. Выводит + , а на - никогда не меняет. Если я правильно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru