#php #arrays #string #mysqli #implode
#php #массивы #строка #mysqli #implode
Вопрос:
Я застрял с этим в течение нескольких часов, пытаясь это исправить, но моих небольших знаний о php недостаточно, поэтому я прошу вашей помощи.
HTML
<input type="checkbox" name="type[]" value="type1">Type 1<br>
<input type="checkbox" name="type[]" value="type2">Type 2<br>
<input type="checkbox" name="type[]" value="type3">Type 3<br>
<input type="checkbox" name="type[]" value="type4">Type 4
Проверка PHP (отдельный файл)
if (empty($_POST["type"])) {
$typeErr = "This field is required";
} else {
$type = array($_POST["type"]);
}
PHP
/*this is line 90*/ $type_string = implode(',', $type);
$sql = "INSERT INTO `table1`(`type`) VALUES ('$type_string')";
Ошибка
Notice: Array to string conversion in C:xampphtdocsprojectexample.php on line 90
Он продолжает говорить мне, что я преобразую массив в строку, когда я использую implode, я понятия не имею, что я делаю не так, у меня просто есть несколько флажков, и выбранные переходят в массив, затем я преобразую этот массив в строку, чтобы иметь возможность отправить его в базу данных mysql…
Вероятно, это глупая ошибка, но я довольно новичок в php и mysql, так что … кто-нибудь может мне помочь?
Я написал $type_string в $typestring, но проблема остается, уведомление все еще происходит…
Комментарии:
1.
$type_string != $typestring
2. замените массив ($_POST[«type»]) на $_POST[«type»]
3. то, что @JohnConde говорит, что $typestring должно быть $type_string или наоборот.
Ответ №1:
$type = array($_POST["type"]);
теперь содержит массив с 0 => array
Итак, implode все еще пытается преобразовать ключ 0 в строку.
Либо
$type = (array) $_POST["type"];
Что, я думаю, вы имели в виду или
/*this is line 90*/ $type_string = implode(',', $type[0]);
это должно быть исправлено.
также убедитесь, что вы защищаете от SQL-инъекций
Комментарии:
1. НАКОНЕЦ, большое вам спасибо, такое простое исправление того, что я застрял на несколько часов! Буквально несколько часов, я должен был спросить об этом раньше… Ну что ж, большое вам спасибо, действительно, полностью исправил это 🙂
2. Я собираюсь принять этот ответ, как только он мне позволит (нужно подождать 5 минут)
Ответ №2:
$POST[«type»] уже является массивом. В вашем коде вы создаете структуру array(array()) srtucture. Если вы хотите быть уверены, что работаете с массивом, используйте
if(is_array($_POST["type"])){ $type=$_POST["type"] }
или преобразовать в массив с помощью
$type = (array)$_POST["type"];
тогда вы можете использовать implode
Удачи 🙂