簡體   English   中英

Flask,SQL,HTML:如何將變量用作INSERT語句的鍵

[英]Flask, SQL, HTML: How to use a variable as a key for INSERT statement

我有一個站點,用戶可以將消息發布到牆上並在評論主題中回復消息。 我無法弄清楚在提交評論表單時如何將評論與消息相關聯,以便將正確的message_id(外鍵)插入數據庫的評論表中。

我在HTML中用for循環顯示來自數據庫的消息和注釋,並且在每個消息/注釋組之后,有一種形式可以路由到'/ post_comment':

{% for message in messages %}
<div>
    <h3>{{ message['first_name'] }} {{ message['last_name']  }}</h3>
    <h3>{{ message['created_at'] }}</h3>
    <p>{{ message['message'] }}</p>
    {% for comment in comments %}
            {% if message['message_id'] == comment['message_id'] %}
            <p>{{ comment['comment'] }}</p>
            {% endif %}
    {% endfor %}
    <form  class="comments" action="/post_comment" method="POST">
        <h4>Reply</h4>
        <textarea id="post_comment" type="textarea" name="comment"></textarea>
        <input class="submit" type="submit" value="Post">
    </form>
 </div>
{% endfor %}

/ post_comment路由如下所示:

@app.route('/post_comment', methods=['POST'])
def post_comment():
    query = "INSERT INTO comments (user_id, message_id, comment, created_at, updated_at) VALUES (:user_id, :message_id, :comment, NOW(), NOW())"
    data = {
         'user_id': session['id'],
         'message_id': 10,     <<<<<<<<<<<<<<<<<<<<<<<<<<<< WHAT GOES HERE?
         'comment': request.form['comment']
        }
    mysql.query_db(query, data)
    return redirect('/wall')

所有這些工作都很好,但是如您所見,在/ post_comment路由中,我將“ message_id”臨時硬編碼為整數(10),因此每個注釋都被記錄為對message_id 10的答復。提交相關消息的評論表單后,選擇上一條消息的message_id。

如何讓表單知道它屬於哪條消息,然后如何將該信息傳遞給我的路線中的查詢?

最好將message_id設置為自動增量。

如果不能,請使用MAX獲取最后一個ID,然后將其增加1。這不是最干凈的,但是可以使用。 SELECT MAX(message_id) AS last_message_id FROM comments;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM