У меня возникли проблемы с хранением содержимого массива в 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
В вашем коде вы выполняете вставку для каждого поля.
Однако в большинстве случаев вы знаете имена полей перед раздачей, и вы можете сделать один 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, когда значение неизвестно, и БД должно вставить значение по умолчанию.