Помощник
|
Добавление данных в БД |
Elusive
|
Сообщение
#1
|
||
|
|
||
|
|||
Ворон |
10.3.2009, 12:32;
Ответить: Ворон
Сообщение
#2
|
|
ну очень странно.
Elusive, вы уже не первый кто считает, что mysql_query возвращает bool. дайте ссылку на доки, где вы это прочли. на самом деле эта функция возвращает указатель на полученный курсор, если это был запрос на выборку. т.е. в вашем случае логика должна быть такова: - выполняете запрос: "select count(1) from users where login = '$login'" - смотрите какое количество записей насчитает запрос (0 или более) - ветвите код согласно результату общие замечания по коду - вычитывайте только то, что нужно вам. в данном случае вы передаете на клиент все данные по юзеру. зачем? - подстановка прямо в запрос $_POST недопустима. это дыра и возможность для инъекций. форматируйте данные. - пароли не хранят в "чистом" виде. как правило, их хешируют, можно с солью. |
|
|
Elusive
|
Сообщение
#3
|
|
Спасибо за ответ. Очень помог.
По поводу того что функция mysql_query() не возвращает bool в выборке тоже уже убедился. Не внимательно прочитал руководство. А выхватил смысл с первого предложения. хотя идея такой проверки была взята с учебных статей IBM, а я чето поверил им и не стал перепроверять в руководстве. Как выяснилось - зря. По поводу других замечаний, еще раз спасибо, буду улучшать и тренироваться. |
|
|
Ворон |
10.3.2009, 18:40;
Ответить: Ворон
Сообщение
#4
|
|
кстати, при поиске юзера было бы неплохо приводить значение поля и параметра к одному регистру. иначе могут быть пользователи Elusive и elusive.
|
|
|
Elusive
|
Сообщение
#5
|
|
я пока учу PHP и MySQL, так что много не знаю и не умею. решил постепенно добавлять возможности в этот код. Тем самим тренируясь.
|
|
|
Elusive
|
Сообщение
#6
|
|
Возникли проблемы снова, решил не создавая новой темы поместить весь код сюда. Не работает ровным счетом ничего правильно (кроме как вывода данных на экран) и воода данных в бд, хотя данные воодятся в любом случае, не зависимо есть пользователь с таким именем в базе или нету. просмотрите пожалуйста свежим взглядом, а то я пол дня в гляделки играю и в безуспешные попытки все исправить. Укажите пожалуйста на мои ошибки и недостатки. Заранее спасибо всем за участие.
[php]<?php function validate($allSubmitted) { $message = " "; $passwords = $allSubmitted["pword"]; $firstpass = $passwords[0]; $secondpass = $passwords[1]; $username = $allSubmitted["name"]; $mail = $allSubmitted["email"]; if ($firstpass !=$secondpass) { $message = $message . "Passwords do not match.<br />"; } if (strlen($username) < 5 || strlen($username) >15) { $message = $message . "User name has to be not less than 5 and not more than 15. <br />"; } if(strpos($mail, '@') === false) { $message = $message . "You did not enter email <br />"; } if ($message == "") { $message = "OK"; } return $message; } foreach($_POST as $key => $value) { if (!is_array($value)) { echo "<p>".$key." = " . $value . "</p>"; } } $passwords = $_POST["pword"]; echo "First password = ".$passwords[0]; echo "<br />"; echo "Second password = ".$passwords[1]; echo "<br />"; if (validate($_POST) == "OK") { echo "<p>Thank you for registering!!!</p>"; } include('db_open.php'); $connection = mysql_connect($db_host, $db_name, $db_password); if(!$connection) { die("Do not acces <br />" . mysql_error()); } $db_select = mysql_select_db($db_database); if(!$db_select) { die("Do not select: <br />" . mysql_error()); } $login = $_POST['name']; $email = $_POST['email']; $passw = $passwords[0]; $search = "SELECT count (1) WHERE login = '$_POST[name]'"; $result_sql = mysql_query($search); if (mysql_num_rows($result_sql) ==0) { $query = "INSERT INTO usec (login, email, password) VALUES ('$login', '$email', '$passw')"; $result = mysql_query($query); if(!$result) { die("Error <br />" . mysql_error()); } else { echo "Good <br />"; } } else { echo "There is another user with such name <br />"; } ?>[/php] |
|
|
Ворон |
11.3.2009, 1:56;
Ответить: Ворон
Сообщение
#7
|
|
|
[PHP]$search = "SELECT count (1) WHERE login = '$_POST[name]'";
$result_sql = mysql_query($search); if (mysql_num_rows($result_sql) ==0) {[/PHP] дело в том, что функция count из mysql всегда возвращает строку! вам нужно писать [PHP]$search = "SELECT 1 WHERE login = '$_POST[name]'"; $result_sql = mysql_query($search); if (mysql_num_rows($result_sql) ==0) {[/PHP] или же [PHP]$search = "SELECT count(1) as row_count WHERE login = '$_POST[name]'"; $result_sql = mysql_query($search); $row = db_fetch_object($result_sql); if ($row->row_count == 0){[/PHP] чуствуете разницу? зы. не выкладывайте весь код, если он не нужен. к вечеру у многих включается режим "многа букаф"
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6866 | 8.4.2024, 17:17 автор: spoyer_ru |
|
ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ [Чарджбек|Рекавери|Возврат] |
9 | Leado | 3911 | 9.2.2024, 16:04 автор: baza0013 |
|
Базы данных, различной тематики, выкладываем тут. Делимся, обмениваемся, заказываем, парсим. |
12 | InfoObmen | 15259 | 4.9.2022, 2:32 автор: Галецкая |
|
Сбор Данных Услуг И Специалистов Яндекс.Услуги | 2 | zkalinin | 2379 | 26.5.2022, 17:10 автор: zkalinin |
|
Добавление RSS-ленты на новостные агрегаторы и блоги | 4 | agency | 4848 | 14.5.2020, 15:53 автор: agency |
Текстовая версия | Сейчас: 25.4.2024, 3:14 |