Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Занесение данных из формы в MySQL, не записывается... 
V
    Опции темы
unicross
Дата 15.10.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



Кстати, уберите и эти строки

 
Код

       if (!@$dbconnect->mysqli_select_db($dbname)) 
                    {
                        echo "<P> В настоящий момент база данных не доступна.</P>" ); exit();
 
                   }


Они лишние, т.к. вы выбрали базу в конструкторе объекта

PM MAIL WWW   Вверх
QaaZ
Дата 15.10.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



Вот кстате весь отрывок кода  для реги, может где-то в другом месте ошибка?

Код

// Подключаемся к БД
@$dbconnect = new mysqli(
                        "$dbhost",
                        "$dbuser",
                        "$dbpass",
                        "$dbname");


    if (!$dbconnect) {
                         echo "<br>Неудалось подключиться к базе данных.";
                     }
                    
                    
@$login = mysqli_real_escape_string($dbconnect,$_POST['login']);
@$pass1 = mysqli_real_escape_string($dbconnect,$_POST['pass1']);
@$pass2 = mysqli_real_escape_string($dbconnect,$_POST['pass2']);
@$sex   = mysqli_real_escape_string($dbconnect,$_POST['sex']);
$date = date('D-M-Y');
$reg_date = date('D-M-Y');
$passwd = md5($pass1);


$sql = "INSERT INTO `login` (`Username`, `Password`, `Gender`,`IsActivated`, `DateOfBirth`, `DateOfRegistration`) VALUES ('$login', '$passwd', '$sex', '1', '$date', '$reg_date')";
$res = $dbconnect->query($sql);


Это сообщение отредактировал(а) QaaZ - 15.10.2008, 20:13
PM MAIL   Вверх
unicross
Дата 15.10.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



Подобный код у меня прошел на ура:

Код

$mysqli = new mysqli("localhost", "root", "", "tests");
if (mysqli_connect_errno()) {
    echo "Ошибка"; exit();
}
$sql = "INSERT INTO `City` (`id_City`, `City`) VALUES (1, 'Санкт-Петербург')";
if ($mysqli->query($sql)) {
   echo "Все ОК";
}
$mysqli->close();


При наличии БД tests и такой таблицы

Код

CREATE TABLE City (
   id_City int NOT NULL auto_increment,
   City char(50) NOT NULL,
   PRIMARY KEY  (id_City)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251;


Покажите SQL запрос для создания вашей БД

Цитата(QaaZ @  15.10.2008,  20:08 Найти цитируемый пост)
@$login = mysqli_real_escape_string($dbconnect,$_POST['login']);


надо заменить на 

Код

$login = $dbconnect->real_escape_string($_POST['login']);




Это сообщение отредактировал(а) unicross - 15.10.2008, 20:25
PM MAIL WWW   Вверх
QaaZ
Дата 15.10.2008, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



Вот код создания бд. (не полный, только saga_login)

Код

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `saga_login` ;
USE `saga_login`;

-- -----------------------------------------------------
-- Table `saga_login`.`list_worlds`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `saga_login`.`list_worlds` ;

CREATE  TABLE IF NOT EXISTS `saga_login`.`list_worlds` (
  `Id` TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `Name` VARCHAR(128) NOT NULL ,
  `Proof` VARCHAR(128) NOT NULL ,
  PRIMARY KEY (`Id`) );


-- -----------------------------------------------------
-- Table `saga_login`.`list_worldcharacters`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `saga_login`.`list_worldcharacters` ;

CREATE  TABLE IF NOT EXISTS `saga_login`.`list_worldcharacters` (
  `UserId` TINYINT(3) UNSIGNED NOT NULL ,
  `WorldId` TINYINT(3) UNSIGNED NOT NULL ,
  `CharacterCount` TINYINT(3) UNSIGNED NOT NULL ,
  INDEX Index_1 (`UserId` ASC) );


-- -----------------------------------------------------
-- Table `saga_login`.`login`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `saga_login`.`login` ;

CREATE  TABLE IF NOT EXISTS `saga_login`.`login` (
  `UserId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `Username` VARCHAR(32) NOT NULL ,
  `Password` VARCHAR(32) NOT NULL ,
  `Gender` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' ,
  `LastUserIP` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' ,
  `LastSession` INT(10) UNSIGNED NOT NULL DEFAULT '0' ,
  `ActiveSession` INT(10) UNSIGNED NOT NULL DEFAULT '0' ,
  `LastLoginDate` DATETIME NULL DEFAULT NULL ,
  `IsActivated` TINYINT(1) NOT NULL DEFAULT '0' ,
  `IsBanned` TINYINT(1) NOT NULL DEFAULT '0' ,
  `HasAgreed` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ,
  `DateOfBirth` DATE NOT NULL ,
  `DateOfRegistration` DATE NOT NULL ,
  `IsTestAccount` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ,
  `LastPlayedWorld` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ,
  `GmLevel` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ,
  `GameTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' ,
  PRIMARY KEY (`UserId`, `Username`) ,
  UNIQUE INDEX Username (`Username` ASC) );




P.S. На C# вот так код проходит на ура :

Код

public void CreateAcc(string name, string pass, int gender)
        {
            MySqlCommand command = 
                new MySqlCommand("INSERT INTO login (`Username`,`Password`,`Gender`, `IsActivated`, `DateOfBirth`, `DateOfRegistration`) VALUES (?AccName,?AccPass,?AccGender, 1, ?Date, ?RegDate);", conn);
            command.Parameters.AddWithValue("AccName", name);
            command.Parameters.AddWithValue("AccPass", CreateHash(pass));
            command.Parameters.AddWithValue("AccGender", gender);
            command.Parameters.AddWithValue("Date", "2000-01-01");
            command.Parameters.AddWithValue("RegDate", DateTime.Today);
            command.ExecuteNonQuery();
        }


Добавлено @ 20:36
Цитата

@$login = mysqli_real_escape_string($dbconnect,$_POST['login']);

надо заменить на 

$login = $dbconnect->real_escape_string($_POST['login']);


Поменял, спасибо. smile

Это сообщение отредактировал(а) QaaZ - 15.10.2008, 20:40
PM MAIL   Вверх
skyboy
Дата 15.10.2008, 20:53 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



не понимаю, почему никто, начиная ещё с первого поста, не посоветовал візвать mysql_error или привести полностью сформированный SQL-запрос? тренировка телепатов?
PM MAIL   Вверх
QaaZ
Дата 15.10.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



mysqli_error ошибок не выводит.

Запрос который должен выполнятся :

Код

INSERT INTO `login` (`Username`, `Password`, `Gender`,`IsActivated`, `DateOfBirth`, `DateOfRegistration`) VALUES ('$login', '$passwd', '$sex', '1', '$date', '$reg_date')




Вот такой код :

Код

// Подключаемся к БД
@$dbconnect = new mysqli(
                        "$dbhost",
                        "$dbuser",
                        "$dbpass",
                        "$dbname");


    if (!$dbconnect) {
                         echo "<br>Неудалось подключиться к базе данных.";
                     }
                    
                    
$login = $dbconnect->real_escape_string($_POST['login']);
$pass1 = $dbconnect->real_escape_string($_POST['pass1']);
$pass2 = $dbconnect->real_escape_string($_POST['pass2']);
@$sex = $dbconnect->real_escape_string($_POST['sex']);
$date = date('D-M-Y');
$reg_date = date('D-M-Y');
$passwd = md5($pass1);

echo "</div>";

$mysqli = new mysqli("$dbhost", "$dbuser", "$dbpass", "$dbname");
if (mysqli_connect_errno()) {
    echo "Ошибка"; exit();
}
$sql = "INSERT INTO `login1` (`Username`, `Password`, `Gender`,`IsActivated`, `DateOfBirth`, `DateOfRegistration`) VALUES ('$login', '$passwd', '$sex', '1', '$date', '$reg_date')";
if ($mysqli->query($sql)) {
   echo "Все ОК";
}


/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!$dbconnect->query("SET a=1")) {
    printf("Errormessage: %s\n", $dbconnect->error);
}

/* close connection */
$mysqli->close();


Выводит: 

Код

Errormessage: Unknown system variable 'a'


Это сообщение отредактировал(а) QaaZ - 15.10.2008, 21:10
PM MAIL   Вверх
unicross
Дата 15.10.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



QaaZ, вы не правильно вставляете дату

Код

$date = date('D-M-Y');


Это не правильно! Дата должна быть типа 2008-10-15

Воспользуйтесь функцией CURDATE():

Код

$sql = "INSERT INTO `login` (`Username`, `Password`, `Gender`,`IsActivated`,  `DateOfBirth`, `DateOfRegistration`)  VALUES ('$login', '$passwd', '$sex', 1, CURDATE(), CURDATE())";


Кроме того, вставляемые данные должны быть уникальными. Значит надо делать проверку перед вставкой!
PM MAIL WWW   Вверх
QaaZ
Дата 15.10.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



Цитата

Кроме того, вставляемые данные должны быть уникальными. Значит надо делать проверку перед вставкой!


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


Цитата

QaaZ, вы не правильно вставляете дату


Спасибо. smile
PM MAIL   Вверх
unicross
Дата 15.10.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



Этот код работает без проблем. Если данные уникальные!!!

Код

$mysqli = new mysqli("localhost", "root", "", "saga_login");
if (mysqli_connect_errno()) {
    echo "Ошибка"; exit();
}
$login = "Надя3";
$pass1 = "123";
$pass2 = "123";
$sex   = "1";
$passwd = md5($pass1);
$sql = "INSERT INTO `login` (`Username`, `Password`, `Gender`,`IsActivated`,  `DateOfBirth`, `DateOfRegistration`)  VALUES ('$login', '$passwd', '$sex', 1, CURDATE(), CURDATE())";
if ($mysqli->query($sql)) {
   echo "Все ОК";
}
$mysqli->close();

PM MAIL WWW   Вверх
QaaZ
Дата 15.10.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



unicross, УРА!! )) Спасибо большое, заработало наконец-то. smile
PM MAIL   Вверх
bobik02
Дата 15.10.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



QaaZ, не понимаю чему тут радоваться. Анализируй

Все же тут есть правила, если вопрос решён помечайте его как решённым !


--------------------
Have a nice day
PM   Вверх
unicross
Дата 15.10.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



Цитата

unicross, УРА!! )) Спасибо большое, заработало наконец-то.


 smile 

Вот еще код, уже с формой

Код

<form method="POST">
<input type="text" name="login"><BR>
<input type="text" name="pass1"><BR>
<input type="text" name="pass2"><BR>
<input type="radio" name="sex" value=1 CHECKED>M<BR>
<input type="radio" name="sex" value=2>Ж<BR>
<input type="submit">
</form>
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "saga_login";
if (!$_POST['login']) { echo "Необходимо ввести данные"; exit(); }
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno()) {
    echo "Ошибка"; exit();
}
$login = $mysqli->real_escape_string($_POST['login']);
$pass1 = $mysqli->real_escape_string($_POST['pass1']);
$pass2 = $mysqli->real_escape_string($_POST['pass2']);
$sex = $mysqli->real_escape_string($_POST['sex']);
$passwd = md5($pass1);
$sql = "INSERT INTO `login` (`Username`, `Password`, `Gender`,`IsActivated`,  `DateOfBirth`, `DateOfRegistration`)  VALUES ('$login', '$passwd', '$sex', 1, CURDATE(), CURDATE())";
if ($mysqli->query($sql)) {
   echo "Все ОК";
}
else {
   echo "Проблемы";
}
$mysqli->close();

?>

PM MAIL WWW   Вверх
QaaZ
Дата 15.10.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.11.2007

Репутация: нет
Всего: нет



Вопрос решён, всем спасибо за помощь.

P.S. Формы у меня уже есть. smile

Это сообщение отредактировал(а) QaaZ - 15.10.2008, 21:40
PM MAIL   Вверх
skyboy
Дата 15.10.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(QaaZ @  15.10.2008,  20:09 Найти цитируемый пост)
Запрос который должен выполнятся :

нет, запрос, который выполняется, не может содержать PHP-переменные. Это только текст. И если бы ты вывел его, а не смесь с PHP-кодом, то либо сам заметил бы сразу ошибки, либо люди тебе подсказали бы. Вторым сообщением в этой теме.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.