-4

基本的に、ユーザーに関するデータベースからデータを抽出し、それを php/html 経由で表示するコードを書いています。私はこのデータを表示する大量の html を持っています。style=\"foo\"

ただし、これを行うと、html にインライン化された php は、データベースから取得した変数を返すことができません。例えば:

$sql = "SELECT u.name, u.surname FROM users AS u, bookings AS b WHERE u.ID = '".$bookings['booker_ID']."';";
$result=mysql_query(sql)

if ($r=mysql_fetch_array($result)){
    extract($r);
}

<table class="table">
    <tbody>
    <tr>
        <td style="width:300px">
            Host:
        </td>
        <td>
            <a>
            <?$name?> <?$surname?>
            </a>
........

動作しませんが、これは動作します:

$sql = "SELECT u.name, u.surname FROM users AS u, bookings AS b WHERE u.ID='".$bookings['booker_ID']."';";
$result=mysql_query(sql)

if ($r=mysql_fetch_array($result)){
    extract($r);
}

echo "<table class=\"table\">
<tbody>
    <tr>
        <td style=\"width:300px\">
        Host:
        </td>
        <td>
            <a>
            ".$name" ".$surname."
            </a>
        ......

これにははるかに多くの html が関与しており、見苦しく/読みにくく、すべてをエスケープするのが面倒です。これを行う/php から抜け出すためのより良い方法はありますが、結果の抽出に関連する変数は保持しますmysql クエリ?

皆さんありがとう!

4

3 に答える 3

1

好きなだけ PHP に出入りできます。あなたの例から:

<?php

$sql = "SELECT u.name, u.surname FROM users AS u, bookings AS b WHERE u.ID = '".$bookings['booker_ID']."';";
$result=mysql_query(sql)


...

if ($r=mysql_fetch_array($result)){
extract($r);
}

?>

<table class="table">
<tbody>
<tr>
<td style="width:300px">
Host:
</td>
<td>
<a>
<?php echo $name ?> <?php echo $surname ?>
</a>

ファイルを制御php.iniできる場合は、短いタグをオンにして、次を使用することもできます。

<?= $name ." ". $surname ?>
于 2013-03-26T17:11:28.747 に答える
1

<?=を評価に使用できます。

$sql = "SELECT u.name, u.surname FROM users AS u, bookings AS b WHERE u.ID = '".$bookings['booker_ID']."';";
$result=mysql_query(sql)

if ($r=mysql_fetch_array($result)){
    extract($r);
}

<table class="table">
    <tbody>
    <tr>
        <td style="width:300px">
            Host:
        </td>
        <td>
            <a>
            <?= $name ?> <?= $surname?>
            </a>
........
于 2013-03-26T17:13:51.593 に答える
0

変数を評価するために、すでに二重引用符を解除しています

<a>".$name" ".$surname."</a>

echoでは、一重引用符を使用してコンテンツをアウトしないのはなぜですか?

echo '<table class="table">...'.$name.'...';

二重引用符はエスケープする必要はありませんが、シングル クォーテーションはエスケープする必要があります。二重引用符を使用する利点は、引用符を終了する必要なく PHP ステートメントを評価できることです。

echo "...<a>$name $surname</a>..."

echoあなたの他のオプションは、必要に応じてPHPと変数から抜け出すことです

?>
<table class="table">
...
<?php echo $name; ?>
...

<?=は の短いタグであることに注意してください<?php echo。これは php.ini の設定であり、すべてのサーバーで使用できるわけではありません。また、ヒアドキュメントの構文を調べることもできます

于 2013-03-26T17:25:15.350 に答える