-1

すべての HTML をエコーアウトする PHP ページがありました。それは悪い習慣であり、HTML を書き出して、必要なときにのみ PHP に切り替える必要があるとアドバイスされた後、それに準拠するようにフォームを書き直そうとしています。

次のことを試しましたが、SQL クエリの結果を含む $row 配列が正しく呼び出されません。

<?php while($row = $sth->fetch()){ ?>
<p>
<input type = "hidden" name ="id" value="<?php $row["id"] ?>"/>';
<p>
<input type = "text" name ="firstName" size ="30" value=" <?php $row["firstName"]?>"/>';</p>
<p>
<input type = "text" name ="lastName" size ="30" value="<?php $row["lastName"]?>"/>';
</p>";
<input type="submit" value="Update" />';
<?php } ?>

私の理解では、開始ブラケットと終了ブラケットがまだ正しい順序である限り、上記のコードは機能するはずですが、機能しません。

私は何を間違っていますか?

4

2 に答える 2

3
<?php while($row = $sth->fetch()){ ?>
<p>
<input type = "hidden" name ="id" value="<?php echo $row["id"]; ?>"/>';
<p>
<input type = "text" name ="firstName" size ="30" value=" <?php echo $row["firstName"]; ?>"/>';</p>
<p>
<input type = "text" name ="lastName" size ="30" value="<?php echo $row["lastName"]; ?>"/>';
</p>";
<input type="submit" value="Update" />';
<?php } ?>

を入れるのを忘れましたecho。エコーなしでは何も出力されません。

次のような別のオプションがあります。

<?php while($row = $sth->fetch()){
echo<<<HTML
<p>
<input type = "hidden" name ="id" value="{$row['id']}"/>';
<p>
<input type = "text" name ="firstName" size ="30" value=" {$row['firstName']}"/>';</p>
<p>
<input type = "text" name ="lastName" size ="30" value="{$row['lastName']}"/>';
</p>";
<input type="submit" value="Update" />';
HTML;
} ?>
于 2012-11-25T23:47:56.937 に答える
1

エコーを使用する必要があります

<input type = "hidden" name ="id" value="<?php echo $row["id"]; ?>"/>

また、HTML をエスケープすることを忘れないでください。

<input type = "hidden" name ="id" value="<?php echo htmlspecialchars($row["id"]); ?>"/>

PHP 5.4 以降、 short_open_tag 設定がオフの場合でも、 short メソッドは常に利用可能です:

<input type = "hidden" name ="id" value="<?= htmlspecialchars($row["id"]); ?>"/>
于 2012-11-25T23:48:19.443 に答える