Хранение содержимого массива PHP в базе данных MySQL

У меня возникли проблемы с хранением содержимого массива в mysql. Я использую код ниже

foreach($found_entry as $key => $sd) { echo "$key => $sd <br>"; $insert_found_row = mysql_query("INSERT INTO myTable values ID = \"$sd[0]\" ,Folder = \"NULL\", Tsi = \"$sd[11]\", PT= \"NA\" ") or die(mysql_error()); echo "$sd"; 

Если я повторяю значения, которые я получаю

 0 => ST10928 1 => 2 => 2010-02-19 03:37:16 3 => \\fs1\ 4 => 5 => 6 => 7 => 8 => M1 9 => 10 => 11 => LOG1.TXT 

Синтаксис запроса неверен. Используйте SET вместо VALUES . Кроме того, вам, вероятно, не нужен цикл foreach вообще, поскольку вы ссылаетесь как на $sd[0] и на $sd[11] . Попробуйте что-то вроде этого:

 $query = sprintf("INSERT INTO myTable SET ID = '%s', folder = NULL, Tsi = '%s', PT = 'NA'", mysql_real_escape_string($found_entry[0]), mysql_real_escape_string($found_entry[11]) ); mysql_query($query) or die(mysql_error()); 

If I use $sd[0], only the first character is getting displayed.

$ sd – это значение (например, «ST10928») вашего массива, но вы обрабатываете значение как сам массив, поэтому $ sd [0] должен возвращать только первый элемент (= письмо).

Если вы пытаетесь вставить значения из своего массива в базу данных (вместо повторения массива и нарезки значений), возможно, вам следует использовать $found_entry[0] вместо $sd[0] и $found_entry[11] для $sd[11] ??

Добавление данных в MySQL с помощью массива PHP

Вставка данных в MySQL

В вашем коде вы выполняете вставку для каждого поля.

Однако в большинстве случаев вы знаете имена полей перед раздачей, и вы можете сделать один INSERT со всеми полями.

 $sql = 'INSERT INTO tbl_name (field_a,field_b,field_c) VALUES('.$found_entry['field_a'].','.$found_entry['field_b'].','.$found_entry['field_c'].');'; 

Это сокращает количество требуемых запросов, поэтому ваш код работает быстрее и использует меньше ресурсов.

Значения по умолчанию

Вы можете передать NULL, когда значение неизвестно, и БД должно вставить значение по умолчанию.