Здраствуйте. Существует запрос который проверяет запись в бд и дает обратный ответ. Помогите в чем и где ошибка PHP: <form method="POST"> Имя<br> <input type='text' name="name"> <br>Фамилия<br> <input type='text' name='family'><br> <input type='submit'> <?PHP $host='localhost'; $name='root'; $pwd='1234'; $db=mysql_connect($host,$name,$pwd); mysql_select_db("test",$db); ?> <?PHP $name_search=isset($_POST['name'])?$_POST['name']:''; $sql = ("SELECT * FROM `users` WHERE `name` = '$name_search'"); $result = mysql_query($sql); if (!$result) if (mysql_num_rows($result)==0) { $sql = ("INSERT INTO users(name, email, password) VALUES ('".$_POST['name']."', '".$_POST['family']."', '".$passwords[0]."')"); $result = mysql_query($sql); if ($result){ echo "Запись добавлена"; } else { echo "Ошибка добавления записи: ".mysql_error(); } } else { echo "Такой пользователь уже зарегистрирован<br />"; $row = mysql_fetch_array($result); while ($row) { echo $row["username"]." -- ".$row["email"]."<br />"; $row = mysql_fetch_array($result); } }
А это ты нам скажи, раз тему создал =) Описываю, как должно быть: 1. Для поля email создается уникальный индекс 2. Далее появляется несколько вариантов: 2.1. Проверить существование записи 2.2. Либо использовать INSERT IGNORE вкупе с LAST_INSERT_ID() Я предпочел бы второй вариант.
Показать что? Как создать уникальный индекс для таблицы? Как сделать INSERT? Как достать LAST_INSERT_ID? Что именно? Твоё домашнее задание - найти в гугле: 1. Что такое уникальный индекс? 2. Разобраться, как его прилепить к полю в том же phpMyAdmin (сырые запросы на сладкое) 3. Как использовать INSERT IGNORE? 4. Как получить LAST_INSERT_ID() ? На все вопросы менее, чем за минуты ты найдешь ответы в гугле. А связать я, быть может, тебе помогу.
Apple я все посмотрел, попробовал, но вопрос вот в чем. Когда я создаю индекс для строки `name` индекс идет создаеться почемуто для `id` пользователей.
В phpMyAdmin это делается так: Либо с помощью запроса CREATE INDEX В любом случае, через графический интерфейс удобней тебе.
Ну собственно что дальше? Код в главной теме не мой. Я пытался его модифицировать, но бесполезно. Видно пока нету опыта. Напиши пожалуйста, если тебя это не затруднит, пример чтоб я мог разобрался наконец и начал работать с ним
Разбирайся на здоровье. Структура БД: [sql]CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `login` varchar(32) NOT NULL, `email` varchar(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;[/sql] РНР код с комментариями: PHP: <?php $mysqli = new mysqli('localhost', 'root', 'password', 'php'); if(!$mysqli->connect_error) { $login = 'Apple'; $email = [email='email@email.com]'email@email.com[/email]'; // Вставка в таблицу с помощью INSERT IGNORE $mysqli->query(' INSERT IGNORE INTO `users` VALUES ( NULL, "' . $login .'", "' . $email . '" ) '); // Если вставлено корректно, то получим ID записи, иначе - ноль (0) $user_id = $mysqli->insert_id; // Если нужно - топаем далее if($user_id) { printf('Пользователь добавлен ( %d )', $user_id); } else echo 'Пользователь существует'; } ?> Этот подход очень удобен, но у него есть один недостаток: счетчик с автоинкрементом будет увеличиваться на единицу даже если пользователь не добавлен. Если не существенно - не обращай внимание. Мне это удобнее, чем лишний запрос.