Здравствуйте. Имеется простая форма регистрации на PHP+MySQL. Используется mysql подключение к БД, но я хочу переписать на PDO.
Нужна помощь в нескольких моментах. Само подключение к БД у меня вроде получилось.
И вот теперь 2 "вопроса".
1.
2.
P.S. В PHP я полный 0, но тем не менее хочу попробовать.
Заранее спасибо!
Нужна помощь в нескольких моментах. Само подключение к БД у меня вроде получилось.
Было:
Стало (то что в комментариях перенесено в config.php):
PHP:
$db = mysql_connect (" . $db_host . ", " . $db_user . ", " . $db_pass . ");
mysql_select_db (" . $db_name . ", $db);
Стало (то что в комментариях перенесено в config.php):
PHP:
include ("config.php");
//$db_host = 'localhost';
//$db_name = 'name';
//$db_user = 'user';
//$db_pass = 'password';
try
{
$dbh = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name . '', $db_user, $db_pass);
}
catch (PDOException $e)
{
print "Ошибка: " . $e->getMessage() . "<br/>";
die();
}
И вот теперь 2 "вопроса".
1.
Было:
Сделал так:
И вроде подобная "штука" работает (происходит следующий "шаг", но вот буквально только что заметил, что при одинаковой паре логин-пароль он не пропускает). Может кто подскажет как поправить?
PHP:
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id']))
{
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
Сделал так:
PHP:
$sth = $dbh->prepare("SELECT id FROM users WHERE login=:login");
$sth->bindParam(":login", $login, PDO::PARAM_STR);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
if (!empty($result['id']))
{
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
2.
Было:
Здесь идей у меня особо и не было, пробовал разные варианты:
Но тут понятно, что как бы идёт проверка $result2=='TRUE', что лишено смысла (Соответственно и выдаёт мне при такой конструкции "Ошибка! Вы не зарегистрированы."). Попробовал втупую заменить sth на result2, но, очевидно, эффекта это не возымело. Касаемо "закомментирования" PDO::PARAM_STR - подглядел в реализации веб-части ChatLogging, там тоже через PDO работает
PHP:
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
if ($result2=='TRUE')
{
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='/index.php'>Главная страница</a>";
}
else
{
echo "Ошибка! Вы не зарегистрированы.";
}
Здесь идей у меня особо и не было, пробовал разные варианты:
PHP:
$sth = $dbh->prepare("INSERT INTO users (login,password) VALUES(:login,:password)");
$sth->bindParam(":login", $login);//, PDO::PARAM_STR);
$sth->bindParam(":password", $password);//, PDO::PARAM_STR);
$sth->execute();
if ($result2=='TRUE')
{
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='/index.php'>Главная страница</a>";
}
else
{
echo "Ошибка! Вы не зарегистрированы.";
}
P.S. В PHP я полный 0, но тем не менее хочу попробовать.
Заранее спасибо!