Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не заносятся данные в mysql
 
 автор: Flok   (12.10.2009 в 16:29)   письмо автору
 
 

Здравствуйте, прошу помочь разобраться в проблеме:

Есть 2 файла
index.php
saveuser.php

index.php
<form action="saveuser.php" method="post">
<p>
    <label for="login">Ваш логин:<br></label>
    <input name="login" id="login" type="text"">
    </p>
<p>
    <label for="password">Ваш пароль:<br></label>
    <input name="password" id="password" type="password">
    </p>
<p>
    <input type="submit" name="submit" value="Зарегистрироваться">
</p></form>


файл saveuser.php
<?php
if (isset($_POST['login'])) { $login $_POST['login'];}
if (isset(
$_POST['password'])) { $password=$_POST['password'];}
$error=array(); //в массив собираются все ошибки
        
if (empty($login)) {$error[]="Вы не ввели логин";}
if (empty(
$password)) {$error[]="Вы не ввели пароль";}

    
$login htmlspecialchars(stripslashes($login));
$password htmlspecialchars(stripslashes($password));

$db mysql_connect ("localhost","mysqluser","mysqlpass");
      
mysql_select_db ("mysqlbase",$db);

$result mysql_query("SELECT id FROM users WHERE login='".$login."'"$db);
$myrow mysql_fetch_array($result);
if (!empty(
$myrow['id'])) {
  (
$error[]="такой логин уже занят");
  };

if (
count($error)==0) {
  
$result2 mysql_query ("INSERT INTO users (login,password) VALUES(".$login.", ".$password.")");}
  else {
    foreach(
$error as $value) {
    echo 
"Ошибка: ".$value."<br>";
    }
}
?>


есть пользователь mysqluser с паролем mysqlpass
Есть база mysqlbase
в ней таблица users

Суть проблемы:
не заносит в базу нужные записи. если перед "if (count($error)==0) { ... .... " вставить echo $login.$password, то выводит логин и пароль, т.е. пустых переменных нет.
count($error) равен нулю. т.е. ошибок тоже нет.
но в базу записи не заносятся.

Почему не заносятся записи?
можно ли проще проверить, существует ли такой логин в базе или нет?

Заранее спасибо за помощь.

  Ответить  
 
 автор: neadekvat   (12.10.2009 в 16:44)   письмо автору
 
   для: Flok   (12.10.2009 в 16:29)
 

Я бы вам предложил делать так:
<?php 
$db 
mysql_connect ("localhost","mysqluser","mysqlpass"); 
      
mysql_select_db ("mysqlbase",$db); 

$error = array();

if (!empty ( 
$_POST['login'] )) {
$error[] = "Вы не ввели логин";
} else {
$login mysql_real_escape_string$_POST['login'] );
}

if (!empty ( 
$_POST['password'] )) {
$error[] = "Вы не ввели пароль";
} else {
$login mysql_real_escape_string$_POST['password'] );
}

$result mysql_query("SELECT id FROM users WHERE login='".$login."'"$db);

if (@
mysql_num_rows$result ) > 0) {
$error[] = "такой логин уже занят";
}

if (empty(
$error)) { 
  
$result2 mysql_query ("INSERT INTO users (login,password) VALUES(".$login.", ".$password.")");
}  else { 
    foreach(
$error as $value) { 
    echo 
"Ошибка: ".$value."<br>"
    } 

?>

  Ответить  
 
 автор: Flok   (12.10.2009 в 16:59)   письмо автору
 
   для: neadekvat   (12.10.2009 в 16:44)
 

В Вашем коде нашел пару ошибок (логин к паролю приравниваете, если логин не пустой, то выдаём ошибку "вы не ввели пароль")

Но не в этом суть, скрипт тоже не работал.
Понял, что ошибка явно не в логике. Благодаря Вам, стал копать дальше и нашел ошибку, она была в синтаксисе sql запроса. Переменные были без кавычек. С кавычками всё прошло на ура.

Спасибо за помощь)

P.s. Извините, что со всякими пустяками на форум полез. Просто 2 дня сидел, не мог найти ошибку.
Спасибо за помощь
p.p.s. о функции mysql_num_rows не знал. Спасибо, что показали.

  Ответить  
 
 автор: Trianon   (12.10.2009 в 18:29)   письмо автору
 
   для: Flok   (12.10.2009 в 16:59)
 

Еще обратите внимание на функцию mysql_insert_id()

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования