簡體   English   中英

PHP PDO用while和foreach內部獲取表單數據

[英]PHP PDO fetch form data with while and foreach inside the while

我在使用select選項填充的表單中更新數據庫時遇到問題。 這是我用MSSQL數據庫中的值填充更新表單的代碼:

$result = $pdo->prepare("SELECT d.id as iddr, d.EGN, d.Names, d.NickName, d.Residence, d.PersonalMobilePhone, d.HomeAddress,d.GarantPerson, c.id as cid, c.city_name, c.post_code, t.id, t.IdDriver, t.StartDateVisa, t.EndDateVisa FROM paerp.dbo.Driver d FULL JOIN paerp.dbo.cities c ON d.Residence = c.id FULL JOIN dbo.TrVisas t ON d.id = t.IdDriver WHERE d.id = :id");

$result->bindParam(':id', $id, PDO::PARAM_STR);
$result->execute();
//for($i=0; $row = $result->fetch(); $i++){
     while($row=$result->fetch(PDO::FETCH_ASSOC)){
?>

這是選擇選項的地方。 這僅顯示數據庫中的值。 沒有可能從下拉列表中改變。

 <select id="residence" name="residence">
<option value="<?PHP echo $row['id']; ?>" selected><?PHP echo     $row['city_name']; ?></option>
<?PHP 
$result2 = $pdo->prepare("SELECT id, city_name, post_code FROM cities");
$result2->execute();
 while($row=$result2->fetch(PDO::FETCH_ASSOC)){
?>
    <option value="<?PHP echo $row['id']; ?>"><?PHP echo $row['city_name']; ?></option>     <?php
}
?>  
    </select>

我在選擇選項之后有更多輸入,但它們沒有填充數據庫中的值。 一切都停在這個下拉列表中。 同一個人可以幫助我找到正確的方法嗎? 謝謝! 我嘗試foreach在第二的位置while ,但隨后的形式輸入填充,但下拉不起作用。

while獲取循環時執行兩個查詢,其中一個嵌套在另一個循環中。 可能還有其他組織邏輯的方法,例如使用fetchAll()一次從外部查詢中檢索所有行,然后使用foreach循環它們。

但這里的主要問題是你在兩個fetch循環中使用變量名$row 這將導致內部提取覆蓋$row的先前內容,從而打破了該數組未來的任何預期用途。 簡單地使用與$row不同的變量名稱作為內循環將有所幫助。

您可能已經看到PHP抱怨未設置的數組索引會更接近$row問題。 始終在開發和測試代碼時,確保PHP在屏幕上顯示錯誤。 在腳本的頂部,(或在開發工作站上的php.ini中啟用):

error_reporting(E_ALL);
ini_set('display_errors', 1);

並確保PDO拋出有用的異常以幫助調試其行為。 默認情況下,它將無提示錯誤。

$pdo = new PDO(/* connection details... */);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

暫無
暫無

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

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