Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 3 / 2
Регистрация: 17.05.2013
Сообщений: 403

Подскажите способы поиска ошибки

22.05.2017, 15:46. Показов 672. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть парсер php по заданию cron каждую минуту он выполняет поиск и обработки информации с последующей его записью в бд. Мне на почту приходит письмо с ошибкой которая выводится на экран например
HTML5
1
2
3
PHP Notice:  Undefined variable: masks2 in/lib/sql.php on line 134
PHP Warning:  implode(): Invalid arguments passed in/lib/sql.php on line 134
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
это строчка находится в методе insertMany
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public function insertMany($table, $object,$last = null,$count=null) {
            $columns = array();
            $i=1;
            foreach ($object as $value) {
                foreach ($value as $key=>$val) {
                    $masks[] = $val;
                    if($i==1) {
                        $columns[] = $key;
                    }
 
                    if ($value === null) {
                        $object[$key] = 'NULL';
                    }
                }
                $masks = implode("','", $masks);
                $masks2[]= "('".$masks."')";
                unset($masks);
                $i++;
            }
 
            $columns_s = implode('`,`', $columns);
 
            $masks_s = implode(',', $masks2);
            //echo $masks_s;
 
            $query = "INSERT INTO `$table` (`$columns_s`) VALUES $masks_s";
 
            $this->select($query);
            //$q = $this->db->prepare($query);
            //$q->execute($object);
 
            //if ($q->errorCode() != \PDO::ERR_NONE) {
             //   $info = $q->errorInfo();
            //    die($info[2]);
           // }
 
            return $this->lastOrCount($last,$count,$i-1);
 
        }
проблемма в том что я не знаю какие данные попали в masks2 как мне можно добавить код например если это действие приведет к ошибке выполнить действие(вывести на экран содержимое) Спасибо большое
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2017, 15:46
Ответы с готовыми решениями:

Подскажите способы изучения php
HTML, CSS выучил. начал проходить manual на php.net, но там куча всего. можно год учить. как мне учиться и параллельно практиковаться?

Подскажите способ вывода блока ссылок
Приветствую! Подскажите как лучше сделать? Хочу выводить в футере блок ссылок из 8 штук. Ссылки должны добавляться и обновляться...

Реализация проекта на PHP, подскажите способ
Добрый день, друзья. В общем хочу сам реализовать проект, знаний пока в PHP мало, изучаю всего пару дней. Есть сайт, на котором...

7
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
22.05.2017, 16:06
PHP Notice: Undefined variable: masks2

нужно объявить массив перед добавлением в него

PHP
1
2
3
$columns = array(); 
$masks = array();
$masks2 = array();
Добавлено через 3 минуты
You have an error in your SQL syntax

нужно экранировать спецсимволы перед использованием строки в запросе

PHP
1
$masks[] = mysql_real_escape_string($val);
Добавлено через 5 минут
вместо удаления переменной
PHP
1
unset($masks);
нужно объявлять новый массив
PHP
1
2
foreach ($object as $value) {
$masks = array();
1
2 / 3 / 2
Регистрация: 17.05.2013
Сообщений: 403
22.05.2017, 16:24  [ТС]
ну а вообще как можно перед ошибкой, которая проявилась сделать условие на ошибку вообще есть такое или нет, например когда ошибка возникает из-за данных которые динамически меняются и создаются совсем в другом месте.
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
22.05.2017, 16:56
PHP
1
2
3
4
5
6
7
8
foreach ($object as $value) {
$masks = array();
foreach ($value as $key=>$val) {
if (!is_string($val)) if (!is_numeric($val)) {
 continue 2; //продолжит выполение внешнего цикла со следующей итерации. 
}
}
}
php - перехват ошибок

http://microsin.net/programmin... ption.html
0
2 / 3 / 2
Регистрация: 17.05.2013
Сообщений: 403
22.05.2017, 17:07  [ТС]
А это что за ошибка вообще впервые вижу и вроде не повторяется
SQL
1
2
PHP Warning:  Error while sending QUERY packet. PID=26949 IN /lib/SQL.php ON line 41
MySQL server has gone away
PHP
1
2
3
4
5
6
7
8
9
10
11
12
 public function select($query, $params = array()) {
            //echo $query."<br>";
          $q = $this->db->prepare($query);
            $q->execute($params);
 
            if ($q->errorCode() != \PDO::ERR_NONE) {
                $info = $q->errorInfo();
                die($info[2]);
            }
 
            return $q->fetchAll();
        }
строчка $q->execute($params);
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
22.05.2017, 17:22
MySQL server has gone away

сервер mysql перегружен и не может выполнить запрос
0
2 / 3 / 2
Регистрация: 17.05.2013
Сообщений: 403
22.05.2017, 18:38  [ТС]
Да так на нем даже посетителей нет)))

Добавлено через 19 секунд
плохо дело
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
22.05.2017, 19:35
Скорее всего не нужно вызывать
PHP
1
$q = $this->db->prepare($query);
если SQL запрос готов

Возможно
PHP
1
$this->select($query);
не подходит для запросов типа INSERT

Попробуйте использовать [РЕЦЕПТ] Класс для работы с БД
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2017, 19:35
Помогаю со студенческими работами здесь

Не работает поиск. Где ошибка?
Доброго времени суток всем. 3 день мучаюсь. Вот код поиска по базе. Дело в том, что выводит все из базы, а не искомую запись ...

Не пойму, где ошибка, веду поиск min элемента
Не пойму, где ошибка, веду поиск min элемента! Подскажите, кто знает!!! &lt;html&gt; &lt;head&gt; &lt;title&gt;Поиск минимального...

Поиск в строке и ошибка
У меня возникла такая ошибка Deprecated: Function ereg() is deprecated in Z:\home\localhost\www\file.php on line 6 в шестой строке...

Поиск по сайту, ошибка в запросе!
пишу поиск по сайту, в начале составляю запрос по частям условными операторами, потом складую всё в кучу: $rqst='name LIKE %'.$name.'%'; ...

поиск ошибки
Новичок в этом, выводит что ошибка а какая именно не говорит. помогите пожалуйста. Заранее спасибо. &lt;?php include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru