-4

基本上我正在编写一些代码,从数据库中提取有关用户的数据,然后通过 php/html 显示它。我有大量的 html 来显示这些数据,我认为我应该摆脱 PHP 而不是逃避一切,比如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

您可以使用<?=for 评估:

$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>..."

您的另一个选择是打破 PHP,然后echo是你需要的变量

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

请注意,这<?=<?php echo. 这是 php.ini 中的设置,可能不适用于所有服务器。此外,您可以查看Heredoc语法。

于 2013-03-26T17:25:15.350 回答