Копирование PHP-кода из учебника дает уведомления на моем компьютере

У меня есть сайт для электронной коммерции, основанный на этом учебнике .

Теперь, на странице cart.php, всякий раз, когда кто-то обновляет количество и переходит на кнопку « Update Cart , они приветствуются следующими уведомлениями:

 Notice: Array to string conversion in /home/aquadual/public_html/fiverrproject/plaincart/library/config.php on line 51 Notice: Array to string conversion in /home/aquadual/public_html/fiverrproject/plaincart/library/config.php on line 51 Notice: Array to string conversion in /home/aquadual/public_html/fiverrproject/plaincart/library/config.php on line 51 Unknown column 'A' in 'where clause' 

Вот код в файле config.php влияющий на это уведомление:

 if (!get_magic_quotes_gpc()) { if (isset($_POST)) { foreach ($_POST as $key => $value) { **$_POST[$key] = trim(addslashes($value));** } } if (isset($_GET)) { foreach ($_GET as $key => $value) { $_GET[$key] = trim(addslashes($value)); } } } 

Фактическая строка является строкой 51 во всем файле конфигурации:

 $_POST[$key] = trim(addslashes($value)); 

У вас действительно есть две проблемы в этой ошибке.

Первая часть состоит в том, что вы принимаете каждое значение в вашем массиве $_POST – это строка (с учетом использования trim() и addslashes() ). Это не обязательно так – значение в этом массиве также может быть массивом. В уведомлениях говорится, что три раза вы пытаетесь обрабатывать массив, как если бы это была строка. Однако это нефатальные уведомления, которые не должны приводить к сбою страницы.

Вторая ошибка – это последняя строка, которая, вероятно, не связана с первыми тремя линиями ошибок (хотя это может косвенно коснуться … 0_0). Эта ошибка является ошибкой в ​​SQL-запросе где-то, что приводит к фатальной ошибке, что приводит к тому, что код PHP перестает выполняться. Похоже, вы пытаетесь ограничить оператор SELECT или UPDATE на основе столбца, который не существует в таблице, которую вы запрашиваете. Вы должны проверить свой код SQL, чтобы убедиться, что он работает правильно. Это, вероятно, не близко к строке 51.

Мне нравится код как следующий

 if (!get_magic_quotes_gpc()) { if (!empty($_GET)) { $_GET = addslashes_deep($_GET); } if (!empty($_POST)) { $_POST = addslashes_deep($_POST); } $_COOKIE = addslashes_deep($_COOKIE); $_REQUEST = addslashes_deep($_REQUEST); } function addslashes_deep($value) { if (empty($value)) { return $value; } else { return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value); } } 

Ну, прежде всего, вы должны опубликовать print_r () вашего $ _POST var. Во всяком случае, есть случай, когда вы можете иметь массив внутри $ _POST ['whatever']:

 <input type="text" name="arr[]" value="a"> <input type="text" name="arr[]" value="b"> <input type="text" name="arr[]" value="c"> 

это даст:

 $_POST => Array( 'arr' => Array( 0 => 'a', 1 => 'b', 2 => 'c' ) ) 

Afaik, это единственный случай

Привет, я столкнулся с подобной проблемой, используя тот же учебник.

Я нашел этот код …

  if (!get_magic_quotes_gpc()) { if (isset($_POST)) { foreach ($_POST as $key => $value) { $_POST[$key] = $value; } } if (isset($_GET)) { foreach ($_GET as $key => $value) { $_GET[$key] = $value; } } } 

отправлено @Chandraveer singh из этой ссылки … ошибка во время функции addslashes () в php

и заменил его кодом, найденным в учебнике, например http://www.phpwebcommerce.com/source/library/config.php

и это решило мою проблему. Надеюсь, это поможет вам и всем остальным использовать один и тот же учебник.