Без распечатки фактического аргумента для адреса электронной почты я не могу понять, в чем заключается ошибка, но, поскольку вы не получаете исключения, я могу только догадываться, что вы используете значение, которого нет в база данных и, следовательно, вы не отделяете адрес электронной почты правильно от ввода, используя то, что составляет:
email_address = data_list.split()[2][:-4].replace("'", "")
Итак, я предлагаю внести следующие изменения:
В HTML :
Измените value="{{descr}}">
на value="{{descr['email']}}">
:
<select id='sel' name='sel' class="selectpicker sel" multiple data-live-search="true" onchange="optionClick(this)">
{% for descr in description%}
<option id="val" value="{{descr['email']}}">{{ descr }}</option>
{% endfor %}
</select>
Таким образом, при вызове Ajax будет отправлен только адрес электронной почты.
Ваш код Python становится следующим:
data = request.json
email_address = data['selectedItems'][0] # the first email address selected
cur = mysql.connection.cursor()
cur.execute("SELECT born_date, phone_number FROM users.data WHERE email = %s", (email_address,))
account = cur.fetchone()
Я считаю, что, поскольку у вас есть раскрывающийся список с множественным выбором, вам будет отправлен список значений, даже если список содержит только один элемент и поэтому я указал data['selectedItems'][0]
. Конечно, очевидный вопрос: если пользователь выбрал несколько адресов электронной почты, ваш код, похоже, не справляется с этим, поэтому я не знаю, почему вы сделали это раскрывающимся списком с множественным выбором. Также обратите внимание, что я использую prepared statement
, поэтому SQL инъекционные атаки больше не должны быть проблемой.