2014-10-08 3 views
0

У меня есть таблица MySQL, в которой у меня есть столбец, где я хочу вставить несколько целых чисел, разделенных запятыми. (например, 1,2,3,4). Я передаю эти целые значения из формы, и я получаю их правильно на мой файл PHP как массив:PHP: Вставка массива целых чисел в базу данных MySQL

Array ([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); 

Любая помощь приветствуется, спасибо!

+0

Почему вы хотите сделать его целым вместо varchar? Невозможно иметь запятую. –

ответ

0

кодировать массив json перед сохранением в базе данных и декодировать объект в массив, когда вы читаете значение. В php вы можете закодировать, вызвав json_encode() и вернуть исходный массив с помощью json_decode().

0

Чтобы вставить массив в базу данных вы можете сериализовать массив как

$project_type_array = serialize($project_type_array); 

И десериализируетесь использовать из базы данных.

Если вы хотите вставить данные в виде (1,2,3) только, а затем применить Еогеасп на массив и сделать строку значений как

$value = ''; 
foreach($project_type_array as $val){ 

    $value = $val.','; 

} 

$value = rtrim($value, ','); // to remove last comma from the string 
+0

Это может сработать, но мне нужно сохранить данные как целое число в базе данных (из-за внешнего ключа в другую таблицу). Таким образом, можно хранить данные как: 3,4,5,6 (с запятой) в виде целого числа в таблице? – Stev

+0

no, вы можете использовать это только как текст, для целого числа должно быть только одно целочисленное значение. Если вы хотите найти ключ из этой строки (1,2,3), вы можете использовать функцию find_in_set() funq mysql. find_in_set (строка поиска, столбец); Надеюсь, что это поможет –

0

Попробуйте

<?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); 
?> 
0

Мне удалось это исправить, я думаю, что не очень хорошо объяснил свою проблему. В основном я пытался вставить несколько внешних ключей в одной строке, так что теперь я сделал это вставить несколько строк с тем же ID, но разные внешние ключи, с цикл:

$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); 
    } 

Это сделал свою работу. Спасибо за помощь в любом случае.

Смежные вопросы