No database selected
Недавно начал учить php. И вот весь день сёдня мучался с php и мускулом, хотел сделать регистрацию. То одна ошибка, то другая. И теперь такая фигня, при добавлении записей в базу данных mySQL
выдает ошибку 'No database selected'... Почему? Как это исправить? Страница регистрации: <html> <head><title>Регистрация</title></head> <body> <h1>Регистрация аккаунта:</h1> <form action="registration_action.php" method="POST"> Логин: <input type="text" name="Логин"/><br/><br/> E-mail: <input type="text" name="Е-mail" /><br /><br/> Пароль: <input type="password" name="Пароль[]"/><br/><br/> Повторите пароль: <input type="password" name="Пароль[]"/><br/><br/> <input type="submit" value="Регистрация" /> </form> </body> </html> После регистрации: <html><head> <title>Регистрация</title> <meta http-equiv="Content-Language" Content="ru"> </head><body> <?php function validate($allSubmitted) { $message = ""; $passwords = $allSubmitted["Пароль"]; $firstPass = $passwords[0]; $secondPass = $passwords[1]; $username = $allSubmitted["Логин"]; if ($firstPass != $secondPass) { $message = $message."Неверный пароль.<br/>"; } if (strlen($username) < 5 || strlen($username) > 25) { $message = $message."Логин должен содержать больше 5 и меньше 25 символов.<br/>"; } if ($message == "") { $message = "OK"; } return $message; } ; function db_connect($user='u777676273_nekit', $password='071296atikin', $db='u777676273_users') { mysql_connect('mysql.hostinger.ru', $user, $password) or die('Не могу подключиться к БД: ' . mysql_error()); } if (validate($_POST) == "OK") { echo "<p>Спасибо за регистрацию!</p>"; db_connect(); $sql = "insert into users (username, email, password) values ('".$_POST["Логин"]."', '".$_POST["Е-mail"]."', \ '".$passwords[0]."')"; $result = mysql_query($sql); if ($result) { echo "Мы вошли!"; } else { echo "Возникли проблемы при добавлении записей в БД: ".mysql_error(); } } else { echo "<p>У вас при регистрации возникли проблемы:</p>"; echo validate($_POST); echo "<p>Пожалуйста, поробуйте снова.</p>"; } ; ?> <p>Ваши данные:</p> <?php foreach ($_POST as $key=>$value) { echo "<p>".$key." = " . $value . "</p>"; } $passwords = $_POST["Пароль"]; echo "Пароль = ".$passwords[0] ; echo "<p>"; echo "Повтор пароля = ".$passwords[1]; echo "</p>"; ?> </body></html> |
что, никто не знает? =(
|
Попробуйте указывать БД при помощи mysql_select_db.
|
function db_connect( $db_host, $db_user, $db_pass, $db_name ) { $result = mysql_connect( $db_host, $db_user, $db_pass ); if ( !$result ) { return false; } if ( !mysql_select_db( $db_name ) ) { return false; } return $result; } |
Цитата:
|
Поищите похожие места у себя в коде и поймете.
|
Цитата:
|
То есть мне, тут
function db_connect( $db_host, $db_user, $db_pass, $db_name ) написать function db_connect( $db_host='mysql.hostinger.ru', $db_user='u777676273_nekit', $db_pass='071296atikin', $db_name='u777676273_users' ) Или function db_connect( 'mysql.hostinger.ru', 'u777676273_nekit', '071296atikin', 'u777676273_users' ) Первое или второе? |
первое
Hekumok, я бы на вашем месте давно бы уж попробовал бы и так и сяк.. заняло бы это пару минут. |
Hekumok,
это пригодится, там простые функции подключения, выборки, добавления можно подсмотреть |
devote, Serg_pnz, большое спасибо =)
|
блин, у мя терь пишет
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\ '')' at line 2 |
$sql = "insert into users (username, email, password) values ('".$_POST["Логин"]."', '".$_POST["Е-mail"]."', \ '".$passwords[0]."')"; Уберите слеш "\" Должно быть так $sql = "insert into users (username, email, password) values ('".$_POST["Логин"]."', '".$_POST["Е-mail"]."', '".$passwords[0]."')"; |
должно быть вообще вот так:
$sql = "insert into `users` (`username`, `email`, `password`) values ('". mysql_real_escape_string( $_POST["Логин"] )."', '". mysql_real_escape_string( $_POST["Е-mail"] )."', '". mysql_real_escape_string( $passwords[0] )."')";А без этого и на инъекцию мускуля напороться можно |
a это куда чо вставлять о.О
|
Цитата:
|
Ну видно же что человек начинающий, по хорошему пароль надо захешировать и посолить
|
Hekumok, код в студию.
Это еще можно посмотреть http://dklab.ru/lib/DbSimple/manual.html Библиотека имеет свои placeholder-ы, что очень облегчает жизнь. |
Цитата:
<html><head> <title>Регистрация</title> <meta http-equiv="Content-Language" Content="ru"> </head><body> <?php function validate($allSubmitted) { $message = ""; $passwords = $allSubmitted["Пароль"]; $firstPass = $passwords[0]; $secondPass = $passwords[1]; $username = $allSubmitted["Логин"]; if ($firstPass != $secondPass) { $message = $message."Неверный пароль.<br/>"; } if (strlen($username) < 5 || strlen($username) > 25) { $message = $message."Логин должен содержать больше 5 и меньше 25 символов.<br/>"; } if ($message == "") { $message = "OK"; } return $message; } ; function db_connect( $db_host='mysql.hostinger.ru', $db_user='u777676273_nekit', $db_pass='071296atikin', $db_name='u777676273_users' ) { $result = mysql_connect( $db_host, $db_user, $db_pass ); if ( !$result ) { return false; } if ( !mysql_select_db( $db_name ) ) { return false; } return $result; } if (validate($_POST) == "OK") { echo "<p>Спасибо за регистрацию!</p>"; db_connect(); $sql = "insert into users (username, email, password) values ('".$_POST["Логин"]."', '".$_POST["Е-mail"]."', \ '".$passwords[0]."')"; $result = mysql_query($sql); if ($result) { echo "Мы вошли!"; } else { echo "Возникли проблемы при добавлении записей в БД: ".mysql_error(); } } else { echo "<p>У вас при регистрации возникли проблемы:</p>"; echo validate($_POST); echo "<p>Пожалуйста, поробуйте снова.</p>"; } ; ?> <p>Ваши данные:</p> <?php foreach ($_POST as $key=>$value) { echo "<p>".$key." = " . $value . "</p>"; } $passwords = $_POST["Пароль"]; echo "Пароль = ".$passwords[0] ; echo "<p>"; echo "Повтор пароля = ".$passwords[1]; echo "</p>"; ?> </body></html> Но он пишет ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\ '')' at line 2 |
Hekumok,
замени строки 36-38 на вот этот код: $sql = "insert into `users` (`username`, `email`, `password`) values ('". mysql_real_escape_string( $_POST["Логин"] )."', '". mysql_real_escape_string( $_POST["Е-mail"] )."', '". mysql_real_escape_string( $passwords[0] )."')"; |
devote, +1
Hekumok, зачем заслешил одну-единственную одинарную кавычку-то? И плюс очень верное замечание про mysql_real_escape_string - никогда не доверяй данным, пришедшим от пользователя. |
devote, спасибо, получилось... только я вот зашел в БД mySQL, а там графа password пустая, почему?
|
Цитата:
|
devote, пожалуйста, помоги, я ну нифига этот php не понимаю >.<
Вот страница регистрации: <html> <head><title>Регистрация</title></head> <body> <h1>Регистрация аккаунта:</h1> <form action="registration_action.php" method="POST"> Логин: <input type="text" name="Логин"/><br/><br/> E-mail: <input type="text" name="Е-mail" /><br /><br/> Пароль: <input type="password" name="Пароль[]"/><br/><br/> Повторите пароль: <input type="password" name="Пароль[]"/><br/><br/> <input type="submit" value="Регистрация" /> </form> </body> </html> Вот на эту переходит: <html><head> <title>Регистрация</title> <meta http-equiv="Content-Language" Content="ru"> </head><body> <?php function validate($allSubmitted) { $message = ""; $passwords = $allSubmitted["Пароль"]; $firstPass = $passwords[0]; $secondPass = $passwords[1]; $username = $allSubmitted["Логин"]; if ($firstPass != $secondPass) { $message = $message."Неверный повтор пароля.<br/>"; } if (strlen($username) < 6 || strlen($username) > 25) { $message = $message."Логин должен содержать от 6 до 25 символов.<br/>"; } if (strlen($firstPass) < 8 || strlen($firstPass) > 30) { $message = $message."Пароль должен содержать от 8 до 30 символов.<br/>"; } if ($message == "") { $message = "OK"; } return $message; } ; function db_connect( $db_host='mysql.hostinger.ru', $db_user='u777676273_nekit', $db_pass='071296atikin', $db_name='u777676273_users' ) { $result = mysql_connect( $db_host, $db_user, $db_pass ); if ( !$result ) { return false; } if ( !mysql_select_db( $db_name ) ) { return false; } return $result; } if (validate($_POST) == "OK") { echo "<p>Спасибо за регистрацию!</p>"; db_connect(); $sql = "insert into `users` (`username`, `email`, `password`) values ('".mysql_real_escape_string( $_POST["Логин"] )."', '".mysql_real_escape_string( $_POST["Е-mail"] )."', '".mysql_real_escape_string( $passwords[0] )."')"; $result = mysql_query($sql); if ($result) { echo "Мы вошли!"; } else { echo "Возникли проблемы при добавлении записей в БД: ".mysql_error(); } } else { echo "<p>У вас при регистрации возникли проблемы:</p>"; echo validate($_POST); echo "<p>Пожалуйста, поробуйте снова.</p>"; } ; ?> <p>Ваши данные:</p> <?php foreach ($_POST as $key=>$value) { echo "<p>".$key." = " . $value . "</p>"; } $passwords = $_POST["Пароль"]; echo "Пароль = ".$passwords[0] ; echo "<p>"; echo "Повтор пароля = ".$passwords[1]; echo "</p>"; ?> </body></html> И как вот сделать, чтоб пароль сохранялся в БД? И как сделать проверку на пустую форму, т.е. чтобы проверялось - всё заполнено или нет? |
<html> <head> <title>Регистрация</title> </head> <body> <h1>Регистрация аккаунта:</h1> <form action="registration_action.php" method="POST"> Логин: <input type="text" name="login"/><br/><br/> E-mail: <input type="text" name="email" /><br /><br/> Пароль: <input type="password" name="password"/><br/><br/> Повторите пароль: <input type="password" name="confirm"/><br/><br/> <input type="submit" value="Регистрация" /> </form> </body> </html> <html><head> <title>Регистрация</title> <meta http-equiv="Content-Language" Content="ru"> </head><body> <?php function validate($allSubmitted) { $message = ""; $firstPass = $allSubmitted["password"]; $secondPass = $allSubmitted["confirm"]; $username = $allSubmitted["login"]; if ($firstPass != $secondPass) { $message .= "Неверный повтор пароля.<br/>"; } if (strlen($username) < 6 || strlen($username) > 25) { $message .= "Логин должен содержать от 6 до 25 символов.<br/>"; } if (strlen($firstPass) < 8 || strlen($firstPass) > 30) { $message .= "Пароль должен содержать от 8 до 30 символов.<br/>"; } if ($message == "") { $message = "OK"; } return $message; } function db_connect( $db_host='mysql.hostinger.ru', $db_user='u777676273_nekit', $db_pass='071296atikin', $db_name='u777676273_users' ) { $result = mysql_connect( $db_host, $db_user, $db_pass ); if ( !$result ) { return false; } if ( !mysql_select_db( $db_name ) ) { return false; } return $result; } if (validate($_POST) == "OK") { echo "<p>Спасибо за регистрацию!</p>"; db_connect(); $sql = "insert into `users` (`username`, `email`, `password`) values ('". mysql_real_escape_string( $_POST["login"] )."', '". mysql_real_escape_string( $_POST["email"] )."', '". mysql_real_escape_string( $_POST["password"] )."')"; $result = mysql_query( $sql ); if ($result) { echo "Мы вошли!"; } else { echo "Возникли проблемы при добавлении записей в БД: ".mysql_error(); } } else { echo "<p>У вас при регистрации возникли проблемы:</p>"; echo validate($_POST); echo "<p>Пожалуйста, поробуйте снова.</p>"; } ?> <p>Ваши данные:</p> <?php $names = array( "login" => "Логин", "email" => "E-mail", "password" => "Пароль", "confirm" => "Повтор пароля" ); foreach ($_POST as $key=>$value) { echo "<p>".$names[ $key ]." = " . $value . "</p>"; } ?> </body></html> |
devote, спасибо =)
|
сцуко, блооо, я жестчайше тупанул!
Я хотел написать devote |
Часовой пояс GMT +3, время: 19:20. |