У меня есть таблица MySQL, в которой у меня есть столбец, куда я хочу вставить несколько целых чисел, разделенных запятой. (как 1,2,3,4).
Я передаю эти целочисленные значения из формы и правильно получаю их в своем php-файле в виде массива:
Массив ([0] => 3 [1] => 4)
Но теперь я хочу вставить это в свою базу данных, но я продолжаю получать:
Примечание: преобразование массива в строку в
Вот как я получаю свои значения постов и помещаю их в массив:
$project_type = substr($_POST['project_type'], 0, -1); //the substring to remove the last comma
$project_type_array = explode(',', $project_type);
И вот как я это вставляю:
$SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project, project_type_ID_project_type)
VALUES('{$row['ID_project']}', {$project_type_array})";
mysql_query($SQL_project_has_type);
Любая помощь приветствуется, спасибо!
закодируйте массив в json перед сохранением в базе данных и декодируйте объект в массив, когда вы читаете значение.
В php вы можете кодировать, вызывая json_encode () и возвращать исходный массив с помощью json_decode ().
Чтобы вставить массив в базу данных, вы можете сериализовать массив как
$project_type_array = serialize( $project_type_array );
И десериализовать для использования из базы данных.
Если вы хотите вставить данные только как (1,2,3), тогда примените foreach к массиву и сделайте строку
из значений, таких как
$value = '';
foreach( $project_type_array as $val ){
$value = $val.',';
}
$value = rtrim( $value, ',' ); // to remove last comma from the string
Попробуй это
<?php
$array = Array ( 0 => 3 ,1 => 4 );
$project_type_array = implode(',',$array);
print_r($project_type_array);
$SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project, project_type_ID_project_type)
VALUES('".$row['ID_project']."','".$project_type_array."')";
mysql_query($SQL_project_has_type);
?>
Мне удалось это исправить, я думаю, что плохо объяснил свою проблему. По сути, я пытался вставить несколько внешних ключей в одну строку, поэтому теперь я вставил несколько строк с одинаковым идентификатором, но с разными внешними ключами, с помощью цикла for:
$project_type = substr($_POST['project_type'], 0, -1);
$project_type_array = explode(',', $project_type);
for($i = 0; $i < count($project_type_array); ++$i){
$SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project,project_type_ID_project_type)
VALUES('{$row['ID_project']}', {$project_type_array[$i]})";
mysql_query($SQL_project_has_type);
}
Это сделало работу. В любом случае, спасибо за помощь.