簡體   English   中英

PDO插入語句未執行

[英]PDO insert statement not executing

我有一個名為waiting.php的頁面,該頁面是啟動輔導員和學生之間的真實會議的門戶。 我有一個提交按鈕,稱為“名稱='提交'

我有一段代碼,要求一旦發生,就將提交按鈕設為(isset),然后我希望PDO語句執行插入查詢。 但是,我檢查phpmyadmin,什么也沒有插入。

我的代碼如下所示:

f(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (counselorname) VALUES (:counselorname)");
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

現在,這是使參贊者姓名具有“提交”按鈕和下拉菜單的實際代碼:

echo "<td> 
                <form method= 'post'>
                    </form><select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select> 
                </form>";

echo "<td> <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
            <input type='submit' name='submit' value='Start Session'>
            </form> </td>";

我是PHP的新手,所以我的邏輯只是那里的一些東西,但我的語法卻不知道如何實現我的邏輯。

任何幫助將非常感激。

編輯:

這是頁面的外觀:

Waiting.php

編輯2:

echo "<td> 
            <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
                    <select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select> 

            <td> <input type='submit' name='submit' value='Start Session'>
            </form> </td>";
}

  echo "</tr>";
  echo "</table>";

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (id, counselorname) VALUES (:id, :counselorname)");
    $query = $dbh->bindParam(':id', $row['id']);
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

您的標記存在缺陷。 您的$ query語句需要namedrop但此選擇列表與您的Submit按鈕不在同一表單中。

您的代碼顯示3種不同的形式,但沒有一種是完整的。

<form method="post" action="..." target="_new">
    -- All components and elements must be declared inside this node
</form>

您可以添加綁定數組以直接執行語句:

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (counselorname) VALUES (:counselorname)");
    $query->execute(array(':counselorname', $_POST['namedrop']));
}

問題是:action =“ counselor.php?id =”。 $ row ['id']。

意味着應該將插入腳本轉到counselor.php頁面。 之所以沒有發生射擊錯誤,是因為我告訴它所做的就是無法接受我想要的方式。

第二個問題是,如果不插入ID但不插入名稱,則表單必須位於method = post中。 所以解決這個問題:

echo "
        <td>    <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
                    <select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select>
            </td>

            <td> <input type='submit' name='submit' value='Start Session'></td>
            </form> </td>";

然后在我的counselor.php上運行了一個測試,以檢查我是否得到了任何東西:

$id = $_GET['id'];
echo "$id";

$name = $_POST['namedrop'];
echo "$name";

校驗

那么我要做的就是運行查詢:

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (id, counselorname) VALUES (:id, :counselorname)");
    $query->bindParam(':id', $_GET['id']);
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

然后是完成的結果:

完

暫無
暫無

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

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