У меня есть сайт для электронной коммерции, основанный на этом учебнике .
Теперь, на странице 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
и это решило мою проблему. Надеюсь, это поможет вам и всем остальным использовать один и тот же учебник.