selectオプションを指定してフォームからデータベースを更新する際に問題があります。 これは、MSSQLデータベースからの値で更新フォームを埋めるために私のコードです:whileとforeachを使用してPHP PDOがフォームデータをフェッチする
$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>
この選択オプションの後に入力が増えましたが、データベースから値が入力されません。すべてがこのドロップダウンに止まります。 同じ方法で正しいことを理解できますか?ありがとうございました! while
の代わりにforeach
を試してみましたが、フォームの入力は行われますが、ドロップダウンは機能しません。
正確に1つの結果が期待されますか?より多くを返すと、いくつかのコンフリクトが発生します。まず最初に、 "コマンドが同期していない"というエラーを引き起こす可能性のある行が残っていて、次に両方のフェッチアクションに同じ変数名 '$ row'を使用すると、 'while'ループは内部で上書きされます。 –
常にコードを開発するときに、PHPがエラーを表示していることを確認して、何が失敗しているのかを確認してください。あなたのコードの先頭に 'error_reporting(E_ALL); ini_set( 'display_errors'、1); '。また、例外をスローするようにPDO接続を設定します。最初の文を 'prepare()'する前に '$ pdo-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION); –
Michael Berkowski、重複する名前 '$ row'に関するあなたの提案はそれを修正しました。私は名前を変更して正常に動作します。ありがとうございました。あなたの意見を答えとしてどうやってマークできますか? – Nasko