2010-02-22 1 views
1

У меня возникают проблемы, хранящие содержимое массива в MySQL Я использую ниже кодСохранения содержимого PHP массива в базе данных 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 
+1

Так что же с ним не так, на самом деле? –

+0

Если я использую '$ sd [0]', отображается только первый символ. – JPro

+0

Какая ошибка у вас? Также будет полезно использовать макет базы данных. Наверное, у вас проблемы с утечкой данных, но без дополнительной информации, которую трудно сказать. – Select0r

ответ

0

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] ??

+0

да, вы правы. $ sd - значение массива, но я получаю различное значение в каждом цикле, я не могу понять, как хранить эти разные значения в разных полях в mysql – JPro

+0

Я отредактировал свой ответ, попробуйте использовать $ found_entry вместо $ sd и измените цикл, чтобы выполнить запрос для каждого «$ found_entry». – Select0r

3

Ваш синтаксис запроса неверен. Используйте 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()); 
0

Добавление данных в 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, если значение не известно, и DB должен вставить значение по умолчанию.

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