php换行导致字符串值消失

时间:2011-12-05 16:07:16

标签: php line-breaks

我有一些php在医疗招聘网站上查询和打印mysql表的信息。 有时用户进入,导致换行,我宁愿没有它们,因为 它会以不应该的方式影响呈现的HTML表的布局。

我可以在填写表单时修剪字符串并将数据写入表中,但是那里已经有很多数据了,所以我决定删除页面上的换行符 php读取并打印结果。

我声明了其中一个导致问题的字符串:

$specialtr = trim($special, "\n"); 

,然后呈现html表的位置:

echo '<td width="150">' . $specialtr . '</td>'; 

以下是整个代码:

所有代码都有效,只有上面添加的部分现在导致带有$ specialtr变量的列不打印/打印为空。

    <form action="selected.php" method="POST">
<table border="1" cellpadding="2" cellspacing="2" style="width: 98%; margin-left: auto; margin-right: auto;">
<tr>
<td>
<?php
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbname = 'xxx';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (mysql_error($conn));
mysql_select_db($dbname) or die(mysql_error($conn));

$specialtr = trim($special, "\n");

echo '<table border="1" cellpadding="2" cellspacing="2" style="margin-left: auto; margin-right: auto;">';

$query = 'SELECT userid FROM employee
      ORDER BY userid ASC';
$result = mysql_query($query, $conn) or die(mysql_error($conn));

$num_entries = mysql_num_rows($result); 

while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $value) {
echo '<tr>';
echo '<td><input type="radio" name="employee" value="' . $row['userid'] . '"/></td>';
echo '<td>Select</td>';
}
}

echo '</tr>';
echo '</table>';

?>

</td>
<td>

<?php
echo '<table border="1" cellpadding="2" cellspacing="2" style="width: 98%; margin-left: auto; margin-right: auto;">';
echo '<tr>';
$query = 'SELECT userid, name, surname, sex, age, nationality, email, telnr, special FROM employee
      ORDER BY userid ASC';
$result = mysql_query($query, $conn) or die(mysql_error($conn));
while ($row = mysql_fetch_assoc($result)) {
extract($row);
echo '<td>' . $userid . '</td>';
echo '<td>' . $name . '</td>';
echo '<td>' . $surname . '</td>';
echo '<td>' . $sex . '</td>';
echo '<td>' . $age . '</td>';
echo '<td>' . $nationality . '</td>';
echo '<td>' . $email . '</td>';               
echo '<td>' . $telnr . '</td>';                
echo '<td width="150">' . $specialtr . '</td>';  
echo '</tr>';
}
echo '</table>';
?>

</td>
</tr>
</table>

<br/>
<br/>
<input type="submit" name="go" value="Go!" />
</form>

代码运行得很好,但是由于我添加了修剪,整个列($ special列消失了)。

我希望也许有人可以告诉我它为什么会消失或我的语法有一点错误。

1 个答案:

答案 0 :(得分:1)

像这样使用extract()是一件可怕的事情。作为一般规则,应该避免使用该功能。

另请注意,在定义$ special之前,您正在进行trim()调用,因此$ specialtr变量将是一个空字符串。在开始获取数据库结果并将结果行提取到$ special之前调用该函数不会奇怪地应用trim()来到达您获取的行。如果您希望在获取结果时修剪结果,则必须在执行提取后应用修剪:

while ($row = mysql_fetch_assoc($result)) {
    echo '<td>' . $row['userid'] . '</td>';
    ...
    echo '<td width="150">' . trim($row['special']) . '</td>';  
                              ^^^^^^^^^^^^^^^^^^^^^
}