|
|
|
| Подскажите в чем дело.
Я добавляю запись в dbf-файл из таблицы на MySql.Запись добавляется (статические значения) ,кроме значений из таблицы,т.е. поля в dbf -файле $t[1],$t[2]-пустые.
// выбрала на сервере из таблицы по запросу
$t[1]=$t['maz'];
$t[2]=$t['m'];
...........
if ( !dbase_add_record($s,array('125','4020','0',$t[1],'5',$t[2])))
{
echo "Ошибка при добавлении записи в dbf-файл";
exit();
}
|
Указать по-другому,типа $t['maz'],$t['m'] я не могу.
Данные в массиве есть,я проверяла.
Спасибо. | |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 19:31)
| | Зачем числовые значения брать в кавычки.
А какой тип данных у $t['maz'],$t['m'], он совпадает с типом в базе?
И почему не можете указать так $t['maz'],$t['m']? И зачем именно $t[1], $t2, а например, просто $a и $b? | |
|
|
|
|
|
|
|
для: confirm
(27.07.2012 в 19:43)
| | В dbf-файле (куда пишем)--это числовые поля
В таблице на Mysq(откуда пишем) -это varchar
но у меня в dbf-файле поля описаны как N , я туда заношу '125.3' (статическое) и проходит
могу и и в переменные занести ,типа $a,$b и т.д.
А разве это что-то меняет?
Спасибо. | |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 20:03)
| | Если не совпадают данные, то конечно бы меняло.
Что за статический тип? '125.3' - это строка.
В dbf, если мне память не изменяет, нет типа данных "статический", насколько помню, есть булев тип, число, строка, дата, и memo, который в php не поддерживался (если конечно, что-то не изменилось). | |
|
|
|
|
|
|
|
для: confirm
(27.07.2012 в 20:11)
| | Я так поняла,что надо поменять тип данных из varchar на числовое.
Статические,да,как Вы сказали-это неизменяемые данные | |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 20:15)
| | Вот специально сейчас открыл руководство, чтобы вспомнить о dbf - нет в ее структуре таких типов данных. Если вы пытаетесь ввести значения как '125.5', то есть строковые, то поля вашей dbf-базы должны иметь именно строковый тип. При этом и $t[1]...чего-то там далее, не помню, должны быть тоже заключены в кавычки.
Кстати, вы так и не ответили на вопросы, почему именно такой механизм передачи данных в массив. | |
|
|
|
|
|
|
|
для: confirm
(27.07.2012 в 20:21)
| | вот стр-ра dbf
$def = array(
array("pshst", "N", 6, 0),
array("cht", "C", 4),
array("godp", "N", 7, 1),
...........................
|
вот я заношу в 'godp' значение (но не из массива), а забиваю руками '125.3' и записывается
мне некоторые данные нужно забить готовыми данными , другие-вытащить из ТАБЛИЦЫ mysq и все записать в dbf | |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 20:27)
| | В чем-то у вас путаница в данных. Можно было бы попросить их у вас и проверить, но под мою версию РНР у меня нет расширения, и я этого сделать не смогу. | |
|
|
|
|
|
|
|
для: confirm
(27.07.2012 в 20:59)
| |
dbase_add_record($d,array('5','41','0','8',$t[1]............
|
ошибки нет,но первые 3 данных записались,которые я записала руками, а последнее из бд-нет.
DBF:
первое поле описано-как N
2-е как С
3-N
4-N
5-N
в таблице на MYSQL
1-е поле как bigint
остальные как varchar | |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 21:13)
| | Как я понимаю, в поля которые нет записи, это number, значит, если записать в массив, например
12, 13.6, то они у вас записываются в dbf?
И зачем вы числовые значения (в mysql) держите в полях varchar? Из-за того, что это у вас 125.5? | |
|
|
|
|
|
|
|
для: confirm
(27.07.2012 в 21:18)
| | было
while($t = mysql_fetch_array($q))
{
$t[1]=$t['maz'];
$t[2]=$t['m'];
....
}
...........
if ( !dbase_add_record($s,array('125','4020','0',$t[1],'5',$t[2])))
{
echo "Ошибка при добавлении записи в dbf-файл";
exit();
}
|
надо
while($t = mysql_fetch_array($q))
{
$rr[1]=$t['maz'];
$rr[2]=$t['m'];
....
}
...........
if ( !dbase_add_record($s,array('125','4020','0',$rr[1],'5',$rr[2])))
{
echo "Ошибка при добавлении записи в dbf-файл";
exit();
}
|
| |
|
|
|
|
|
|
|
для: morozmoroz
(27.07.2012 в 23:23)
| | ?
И только не mysql_fetch_array(), а лучше mysql_fetch_assoc(), а если mysql_fetch_array(), то с указанием второго аргумента, вам нужного. | |
|
|
|