Перейти к содержимому


скрипт создания записив бд

Скрпит

Сообщений в теме: 29

#1 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 17 Ноябрь 2014 - 11:43

хочу создать скрипт создания записи в БД

<?php

require_once "include/mysql_connect.php";
require_once "common.php";

$data['Цена'] = '100';
insert_query($data,'222');

?>

называю его 1.php и ложу в корень

При вызове www.cbxxx.ru/1.php
пишет ошибка подключения к БД. В чем может быть трабл?

Таблицу специально создал 222, так как видимо из-за проблем с кодировкой ничего тоже не работает.

Сообщение отредактировал ManFree: 17 Ноябрь 2014 - 11:45


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Ноябрь 2014 - 12:44

При использовании require_once "common.php", отдельно запускать "include/mysql_connect.php" не требуется, все уже включено в common.php.

В том числе не должно быть никаких проблем с кодировками (если конечно сам скрипт сохранен в utf-8).

#3 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 17 Ноябрь 2014 - 14:01

Просмотр сообщенияCbCoder (17 Ноябрь 2014 - 12:44) писал:

При использовании require_once "common.php", отдельно запускать "include/mysql_connect.php" не требуется, все уже включено в common.php.

В том числе не должно быть никаких проблем с кодировками (если конечно сам скрипт сохранен в utf-8).

упростил

<?php
require_once "common.php";

$data['Цена'] = '100';
insert_query($data,'222');
?>

Выкидывает на страницу авторизации.
Если авторизоваться - запись создается. данные передаются.
Если нет - вилы
как быть ?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Ноябрь 2014 - 15:44

Без авторизации, если вам нужно просто соединение с БД, достаточно использовать 2 скрипта для подключения:

require_once "include/config.php";
require_once "include/mysql_connect.php";

В вашем варианте в первом сообщении не было config.php, а там как раз находятся параметры подключения, которые подставляются в mysql_connect.php. Файл common.php тогда не нужен. НО, в этом варианте не будут работать БД-функции от КБ (insert_query), придется использовать только прямые запросы со встроенными функциями PHP (mysql_query).

#5 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 18 Ноябрь 2014 - 08:35

Вопрос в тему, какую функцию использовать вместо data_insert в аналогичном случае подключения к КБ, если необходимо вставить значение "Х" встроку, где соседнее поле содержит "У",

#6 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 18 Ноябрь 2014 - 19:04

полагаю что как кто так,

mysql_query("UPDATE `table` SET `field1` = 'x' where field2 = y");

Сообщение отредактировал ManFree: 18 Ноябрь 2014 - 19:05


#7 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 19 Ноябрь 2014 - 07:54

Спасибо попробую )

#8 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 19 Ноябрь 2014 - 08:02

А имена полей можно внешние ?

#9 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 19 Ноябрь 2014 - 08:21

require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE 630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}

выдало ошибку

Warning: mysql_query() [function.mysql-query]: Can't connect to MySQL server on 'localhost' (10061) in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 29

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 29

29 линия это как раз $result = mysql_query ("UPDATE 630 SET f11560='ready' WHERE f11540='01193'");

Сообщение отредактировал Dinak: 19 Ноябрь 2014 - 09:51


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Ноябрь 2014 - 12:44

Просмотр сообщенияDinak (19 Ноябрь 2014 - 08:02) писал:

А имена полей можно внешние ?

Нет, только внутренние.

Просмотр сообщенияDinak (19 Ноябрь 2014 - 08:21) писал:

выдало ошибку

Имя таблицы с данными выглядит как DATA_TABLEid_таблицы, у вас же прописан только id. Т.е. должно быть:

"UPDATE ".DATA_TABLE."630 SET f11560='ready' WHERE f11540='01193'"

#11 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 19 Ноябрь 2014 - 14:46

require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE".DATA_TABLE".630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}

Снова синтаксическая ошибка в 3 строке

#12 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 20 Ноябрь 2014 - 00:33

Просмотр сообщенияDinak (19 Ноябрь 2014 - 14:46) писал:

require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE".DATA_TABLE".630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}

Снова синтаксическая ошибка в 3 строке

а откуда mySQL сервер может знать что такое DATA_TADLE? В Вашем случай нужно указывать РЕАЛЬНОЕ имя таблицы, например f_data630
Или, если все же хотите DATA_TABLE, подключать еще и constants.php

Сообщение отредактировал maksn: 20 Ноябрь 2014 - 00:38

"...Сижу, паяю. CRM починяю..."
Мои разработки

#13 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 20 Ноябрь 2014 - 08:51

Подключение constants.php - не помогло!

require_once "include/constants.php";	
require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE".DATA_TABLE".630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}
Ответ:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4

Сообщение отредактировал Dinak: 20 Ноябрь 2014 - 08:51


#14 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 20 Ноябрь 2014 - 09:52

Просмотр сообщенияDinak (20 Ноябрь 2014 - 08:51) писал:

Подключение constants.php - не помогло!

...........................
$result = mysql_query ("UPDATE".DATA_TABLE".630 SET f11560='ready' WHERE f11540='01193'");
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4
А если внимательно посмотреть на свой код? Точка после кавычек, а не после DATA_TABLE Плюс еще нужен пробел после UPDATE
Вот и ошибка

Сообщение отредактировал maksn: 20 Ноябрь 2014 - 09:56

"...Сижу, паяю. CRM починяю..."
Мои разработки

#15 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 20 Ноябрь 2014 - 10:28

Просмотр сообщенияmaksn (20 Ноябрь 2014 - 00:33) писал:

Или, если все же хотите DATA_TABLE, подключать еще и constants.php

Да, забыл про него. Желательно все таки использовать DATA_TABLE, т.к. при переносах на другой сервер может меняться префикс таблиц. Соответственно, подключать constants.php.

#16 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 20 Ноябрь 2014 - 11:01

Если я верно всё исправил, то так:
require_once "include/constants.php";	
require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE" .DATA_TABLE."630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}

Но результат иной:
Warning: mysql_query() [function.mysql-query]: Can't connect to MySQL server on 'localhost' (10061) in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4
Данные не обновлены!

Сообщение отредактировал Dinak: 20 Ноябрь 2014 - 11:02


#17 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 20 Ноябрь 2014 - 11:15

Просмотр сообщенияDinak (20 Ноябрь 2014 - 11:01) писал:

Если я верно всё исправил, то так:
require_once "include/constants.php";	
require_once "include/config.php";
require_once "include/mysql_connect.php";
$result = mysql_query ("UPDATE" .DATA_TABLE."630 SET f11560='ready' WHERE f11540='01193'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}

Но результат иной:
Warning: mysql_query() [function.mysql-query]: Can't connect to MySQL server on 'localhost' (10061) in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files (x86)\MSTL\ClientBase\www\speller.php on line 4
Данные не обновлены!

Ну, во первых - если все же решили использовать константы КБ и mysql_connect.php, то
1. Используйте уже и функции КБ. - не mysql_query(), а sql_query(). Или же, что предпочтительнее, data_update() Хотя и sql_query() будет работать Для этого подключите все остальное
include_once (CB_ROOT . "include/config.php");
include_once (CB_ROOT . "include/mysql_connect.php");
include_once (CB_ROOT . "include/functions1.php");
include_once (CB_ROOT . "include/functions2.php");
include_once (CB_ROOT . "include/constants.php");
include_once (CB_ROOT . "include/sql_functions.php");
Где CB_ROOT корневой каталог КБ
2. Пробел нужен не после кавычки, а после UPDATE
3. С некоторых пор mysql функции требуют собственного подключения, не через mysql_connect.php

Сообщение отредактировал maksn: 20 Ноябрь 2014 - 11:26

"...Сижу, паяю. CRM починяю..."
Мои разработки

#18 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 21 Ноябрь 2014 - 11:51

Тогда опять же встанет вопрос об логинистости пользовтаелем, от чеГо я хотел уйти )

#19 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Ноябрь 2014 - 15:48

$config['script_noauth']=1;
include "common.php";
//используете стандартные функции кб
data_insert(89, EVENABLE, $data);

Чем вас такой вариант не устраивает? К слову, начиная с 203 common.php подключается из любого места

#20 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 24 Ноябрь 2014 - 12:24

Цитата

Просмотр сообщенияwondertalik (21 Ноябрь 2014 - 15:48) писал:

$config['script_noauth']=1;
include "common.php";
//используете стандартные функции кб
data_insert(89, EVENABLE, $data);

Чем вас такой вариант не устраивает? К слову, начиная с 203 common.php подключается из любого места

На такое подключение КБ ругается :

Fatal error: main() [function.require]: Failed opening required '/lang/.php' (include_path='.;C:\php5\pear') in C:\Program Files (x86)\MSTL\ClientBase\www\common.php on line 231


Версия КБ 2.0.3, LOCAL

Сообщение отредактировал Dinak: 24 Ноябрь 2014 - 12:25






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных