Убедитесь, что электронная почта хранится в виде строки [Raku] - PullRequest
5 голосов
/ 06 марта 2020

Не знаю, как закрыть это, но я больше не могу удалить его ... Проблема решена

У меня есть форма, где пользователи вводят электронную почту, а CRO пытается запросить электронную почту в аккаунтах. База данных, чтобы найти совпадение. Проблема в том, что Sqlite3 видит символ @ как оператор и выдает ошибку. Это работает, если я объявляю это как строку, но как мне сделать это внутри Routes.pm6? Вот блок кода, над которым я работаю.

post -> 'reset' {
        request-body -> (:$email) {
        #Check to see if email exists in accounts
        #If Exists then send email
        #If not exists post email not found

                $sth = $dbh.prepare(q:to/STATEMENT/);
                select email from accounts WHERE email = (?) 
                    STATEMENT

        # $email = $email.Str
        my $results = $sth.execute("$email");

        if $results == 1 {
            content 'text/html','Successful Email sent' ~ '<br><a href="/">Home</a>';
        } else {
            content 'text/html', "Email does not exist";
        }
        }
    }

Я пробовал разные вещи, такие как добавление Str в теле запроса или .Str в случайных местах. Я также попытался добавить цитаты. Это файл html:

<DOCTYPE html>
<html lang="en">
<head>
    <title>Reset Password</title>
</head>
<body>
    <form action="/reset" method="post">
      Email:<br>
      <input type="text" name="email">
      <br>
      <input type="submit" value="Submit">
      </form>
      <br>
      <a href="register.html">Create an Account</a>
      <a href="signin.html">Sign In</a>
      <br>
      <a href="/">Home</a>
</body>
</html>

Что я пытаюсь сказать: как мне убедиться, что все, что вводит пользователь, является строкой, а затем запрашивается как строка в sqlite3?

1 Ответ

0 голосов
/ 10 марта 2020

Райф правильный. Я понял это и пошел дальше. Я закрываю это

...