[英]In PDO prepare statement, for multiple insert query executing twice.why?
[英]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的新手,所以我的邏輯只是那里的一些東西,但我的語法卻不知道如何實現我的邏輯。
任何幫助將非常感激。
編輯:
這是頁面的外觀:
編輯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.