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:\xampp\htdocs\project\example.php on line 90
Он постоянно говорит мне, что я преобразовываю массив в строку, когда использую implode, я понятия не имею, что я делаю неправильно, у меня есть несколько флажков, и выбранные из них переходят в массив, затем я внедряю этот массив в строку, чтобы быть в состоянии отправить его в базу данных MySQL...
Вероятно, это глупая ошибка, но я новичок в php и mysql, так что... кто-нибудь может мне помочь?
Я написал $type_string в $typestring, но проблема остается, уведомление все еще происходит...
2 ответа
$type = array($_POST["type"]);
теперь содержит массив с 0 => array
Таким образом, implode все еще пытается преобразовать ключ 0 в строку.
Или
$type = (array) $_POST["type"];
Что, я думаю, ты имел в виду или
/*this is line 90*/ $type_string = implode(',', $type[0]);
должен это исправить.
также убедитесь, что вы защищаетесь от внедрения SQL
$POST["type"] уже является массивом. В своем коде вы создаете структуру array(array()). Если вы хотите быть уверены, что вы работаете с использованием массива
if(is_array($_POST["type"])){ $type=$_POST["type"] }
или приведение к массиву с помощью
$type = (array)$_POST["type"];
тогда вы можете свободно использовать Удачи:)